O que significa esta palavra reservada na linguagem Java, e qual sua utilidade e alguns exemplos…
Valeu galera…
O que significa esta palavra reservada na linguagem Java, e qual sua utilidade e alguns exemplos…
Valeu galera…
A palavra transient impede a serialização dos campos que estiverem marcados com ela.
Por exemplo, você cria um objeto que é serializável, mas dentro dele, por composição, você tem um objeto que não pode ser serializado junto. Aí você marca ele como transient e quando você deserializar este objeto ele volta com o valor padrão.
Até aki entendi perfeitamente, mas, vc saberia me dar um exemplo, ou onde encontro alguns exemplos… Procurei no site da Sun, mas não encontrei um link legal ainda…
Muito obrigado pela ajuda…
Não tem muito segredo, simplesmente não serializa o valor do campo mesmo. Exemplo:
[code]import java.io.*;
class Serializavel implements Serializable {
public transient int valor;
}
public class Teste {
public static void main(String[] args) {
Serializavel s1 = new Serializavel();
s1.valor = 5;
System.out.println(s1.valor);
FileOutputStream fos = null;
ObjectOutputStream out = null;
try {
fos = new FileOutputStream("/home/bani/teste.txt");
out = new ObjectOutputStream(fos);
out.writeObject(s1);
out.close();
} catch(IOException ex) {
ex.printStackTrace();
}
FileInputStream fis = null;
ObjectInputStream in = null;
Serializavel s2 = null;
try {
fis = new FileInputStream("/home/bani/teste.txt");
in = new ObjectInputStream(fis);
s2 = (Serializavel)in.readObject();
in.close();
} catch(Exception ex) {
ex.printStackTrace();
}
System.out.println(s2.valor);
}
}[/code]
Tenho essa classe “Serializavel” com um campo transient. Na classe Teste estou atribuindo 5 a este meu campo e depois serializando o objeto. Quando volto ele, o campo está valendo 0. Se apagar o transient e rodar novamente, vai valer 5 mesmo depois de desserializar.
Mas se você quer saber porque você poderia querer usar isso, seguem alguns exemplos: