Palavra-chave transitória em Java: o que é e como funciona?
Publicados: 2022-03-06Como todas as outras linguagens de programação, a Java Programming Language possui uma lista de palavras reservadas que possuem um significado específico. Este conjunto de 52 palavras reservadas por Java são conhecidas como palavras-chave. Como eles têm um significado predefinido, os programadores não podem usar palavras-chave para nomear suas classes, objetos, variáveis e outros identificadores. Uma dessas 52 palavras-chave é a palavra-chave transitória – que será o foco do nosso blog!
Índice
Entendendo a palavra-chave transitória em Java
Transient é um dos modificadores mais úteis presentes na linguagem de programação Java. O papel principal da palavra-chave transiente vem em casos de serialização. O modificador transiente pode ser aplicado a membros de campo de uma classe para desativar a serialização nesses membros específicos.
Simplificando, a palavra-chave transient em Java pode ser usada pelo programador para evitar a serialização. Se algum objeto específico de qualquer estrutura de dados foi definido como transitório pelo programador, ele não será serializado. Como resultado, você pode usar a palavra-chave transient para indicar à JVM (Java Virtual Machine) que sua variável transiente não fará parte de nenhum estado persistente do objeto.
Vamos tentar entender o funcionamento da palavra-chave transient em Java usando um exemplo bem básico. Primeiro, criaremos uma classe Address e definiremos três atributos para a classe – streetName, areaName e houseNumber. Vamos mantê-lo transitório, pois não queremos armazenar ou salvar o terceiro atributo – houseNumber.
classe Address implementa Serializable { private String streetName; private String areaName; privado transiente String houseNumber;
//Setters e getters } |
Agora vamos serializar uma instância da classe Address.
tente { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(“addressinfo.ser”)); Endereço a = new Endereço(); a.setstreetName(“MIG”); a.setareaName(“Vikas Nagar”); emp.sethouseNumber(“110”); //Serializa o objeto oos.writeObject(a); oos.close(); } catch (Exceção e) { System.out.println(e); } |
Se nosso código funcionasse corretamente, as informações de 'houseNumber' não seriam salvas, pois definimos como transiente. Agora, vamos tentar desserializá-lo de volta para o objeto original e ver se as informações foram salvas ou não.
tente { ObjectInputStream o = new ObjectInputStream(new FileInputStream(“addressinfo.ser”)); //Lê o objeto de volta Endereço readAddressInfo = (Endereço) o.readObject(); System.out.println(readAddressInfo.getstreetName()); System.out.println(readAddressInfo.getareaName()); System.out.println(readAddressInfo.gethouseNumber()); o.fechar(); } catch (Exceção e) { System.out.println(e); } |
Se você executar a parte do programa Java acima, receberá a seguinte saída:
MIG
Vikas Nagar
nulo
Como você pode ver, as informações 'houseNumber' não foram salvas em um estado permanente devido à serialização, e é por isso que recebemos o valor 'null' como saída. É exatamente por isso que a palavra-chave transient é usada – para armazenar valores em variáveis de uma maneira que não seja permanente, mas transitória.
Casos de uso para a palavra-chave 'transitória' em Java
Agora que você entende a palavra-chave transiente e o que ela faz, a próxima pergunta lógica que surge é – quando usamos a palavra-chave transiente?
Vamos expandir nossos aprendizados sobre a palavra-chave transiente analisando profundamente algumas das situações em que você se beneficiaria usando as palavras-chave transientes.
Aqui estão alguns casos de uso comumente encontrados para você ter em mente:
- O primeiro caso de uso da palavra-chave transiente é durante situações em que você pode ter campos de dados que são calculados ou derivados de alguns outros campos dentro da instância da classe. Como resultado, esses campos precisam ser calculados programaticamente e dependem de outros valores. É por isso que, em vez de ter esses campos persistentes, eles podem ser não serializados usando a palavra-chave transient. Exemplos desses valores transitórios calculados a partir de outras figuras podem incluir valores baseados em carimbo de data/hora, valores baseados em porcentagens etc. Em todos esses casos, você está calculando o valor de uma variável com base nos valores existentes no momento.
- Outro caso de uso importante pode ser quando você está trabalhando com qualquer tipo de informação segura que não deve, em nenhum caso, vazar para fora da JVM, então isso pode ser não serializado usando a palavra-chave transient.
- Os campos que não estão marcados como “serializáveis” dentro do Java Development Kit podem ser usados com uma palavra-chave transiente. Uma coisa importante a ser observada aqui é que todas as classes Java que não implementam a interface serializável não podem ser serializadas, pois não são referenciadas em nenhuma classe serializável. Como resultado, eles podem lançar “java.io.NotSerializableException” se não forem marcados como “transitórios” antes de serializar a classe principal.
- E, finalmente, há algumas ocasiões em que não faz sentido serializar alguns campos. Por exemplo, se você adicionou uma referência de logger em seu código, não deseja serializar essas informações. Você deve serializar as informações que representam o estado de uma instância. Os loggers, por outro lado, não representam nenhum estado, então não adianta serializá-los. Assim, eles devem ser usados com a palavra-chave transient.
Para concluir
Os casos de uso discutidos acima não são de forma alguma exaustivos. Experimente a palavra-chave transiente e crie seus próprios casos de uso. Afinal, palavras-chave são feitas para programadores, e você só poderá fazer a maioria das palavras-chave quando souber como elas funcionam e o que significam.
Com isso, chegamos ao final deste blog sobre palavras-chave transitórias em Java. Este é um dos conceitos mais introdutórios que você deve procurar dominar para crescer em sua carreira de desenvolvimento de software. O campo de desenvolvimento de software é extremamente dinâmico, mas muito acolhedor se você estiver pronto para puxar suas meias e colocar seus melhores esforços!
Na upGrad, orientamos e orientamos estudantes de todo o mundo, pertencentes a diferentes domínios, e os ajudamos a iniciar suas carreiras no desenvolvimento de software. Nosso PGP em Desenvolvimento de Software – Especialização em Desenvolvimento Full Stack foi desenvolvido para profissionais iniciantes e experientes. Além de tutores especializados e material de aprendizado de última geração, você também recebe colegas talentosos, suporte abrangente para colocação e orientação individual com líderes do setor. Então confira o conteúdo do curso e faça logo sua inscrição!
1. Qual é a palavra-chave transiente em Java?
Palavras-chave transitórias em Java podem ser usadas para evitar a serialização de um objeto. Usando palavras-chave transitórias, você garante que o valor mantido pelo campo específico não será persistente.
2. A palavra-chave transiente pode ser usada com quais elementos em Java?
Você pode usar a palavra-chave transient em Java para não serializar uma classe, uma variável, um objeto ou um campo.
3. Como a palavra-chave transiente e a palavra-chave volátil diferem em Java?
A palavra-chave transiente é usada para evitar o processo de serialização, enquanto uma palavra-chave volátil é usada com uma variável para que ela não seja armazenada na memória principal.