Java Readfields

Java Readfields
“Para ler objetos que foram escritos anteriormente por ObjectutputStream, usamos a classe ObjectInputStream do Java.pacote io e o java.io.Pacote ObjectOutputStream que possui a função readfields (). Os campos persistentes são lidos no fluxo e disponibilizados por nome usando o java.io.ObjectInputStream.Função readfields (). A função readfields () é uma função não estática que só pode ser acessada através do objeto de classe; Se tentarmos obter o método diretamente pelo nome da classe, encontraremos um erro. Ao ler os campos, a função readfields () pode aumentar uma exceção.”
  1. Ioexception: Ao executar, essa exceção pode ser lançada se houver um erro de entrada ou saída.
  2. ClassNotFoundException: Este erro pode ocorrer se a classe para a qual os objetos foram serializados não for encontrada.
  3. NotActiveException: Esta mensagem de erro pode aparecer se o fluxo não estiver aberto e pronto para ler objetos. Em seguida, examinaremos a sintaxe e o exemplo do método Readfields () da classe ObjectInputStream.

Sintaxe do método readfields () em java no Ubuntu 20.04

A sintaxe do Java suporta a função Readfields () é a seguinte:

Public ObjectInputStream.Getfield readfields ();

O objeto Getfields verifica os campos que podem ser acessados ​​para esta classe usando a classe ObjectStream do objeto atual. Durante esta chamada específica para o método readObject da classe, o objeto Getfields fornecido por Readfields é o único que é válido. Somente uma vez que o Readfields foi invocado pode ser lido diretamente do fluxo.

Parâmetro do método readfields ():

Não há parâmetros que aceite.

Retornar tipo de método readfeilds ():

ObjectInputStream é do tipo de retorno do método. Quando você chama Getfield, ele retornará um objeto chamado getfield que indica que os campos permanentes do objeto não são serializados.

Exemplo 1: Usando o método readfield () em java no Ubuntu 20.04

A função readfields () do java.io.A classe ObjectInputStream é demonstrada no exemplo abaixo.

Aqui, incluímos o pacote Java “Java.io ”com a palavra -chave“ importar ”. Em seguida, estabelecemos a classe "RF1" com o modificador "público". Construímos o método principal dentro da classe "RF1" que também lança a "exceção" porque a classe Java "Excection" também é definida com o método principal se ocorreu. Dentro do corpo principal, temos a declaração dos objetos como "fos" pelo FileOutputStream, o "OBJ" pelo objectOutputStream, o objeto "fis" pelo FileInputStream e o objeto "OIS" pela classe "ObjectInputStream".

Os objetos “fis” e “fos” levam o arquivo “arquivo.txt ”como entrada. O objeto "Obj" e "Ois" é usado para mostrar o fluxo desses arquivos. Em seguida, utilizamos o método writeObject () com a instância "OBJ", que é chamada de função readfields (). O WriteObject escreve os números inteiros da instância "Obj". O fluxo será lavado pelo método Flush (), como o adicionamos após o método WriteObject. Depois disso, temos uma instância "RF" dos leitores que chamavam o método ReadObject para ler o objeto "OIS" e imprimir os campos.

Em seguida, temos uma classe estática, "Readfields", que implementa uma classe serializável e depois declara a string "mystr" e define com o valor da string. Lá, chamamos o método de "readObject", que define a instância "s" para o fluxo de entrada do objeto. O método readfields () leu os campos e os devolve com o acesso do método de retorno.

O compilador Java, sem qualquer IoException, exibe os campos do método readfields ().

Exemplo 2: Usando o método Readfeilds com a validação de strings em Java no Ubuntu 20.04

Como vimos em um exemplo anterior, o método readfields () retornou o campo depois de lê -lo. Agora, estamos realizando a mesma operação, mas com um cenário complexo. Vamos validar a primeira corda e depois exibir a segunda.

Construímos a classe "RF2", que tem o método principal. Dentro dos colchetes do método principal, definimos a string como "S1" e temos o valor com representação de string. Em seguida, usamos o bloco de tentativa. O bloco de tentativa tem a criação do arquivo “Arquivo.txt "chamando a classe de" fileouputstream ". A instância é definida como "FileIn" para a entrada do fluxo que é passado no objeto "FileOut".

Então, chamamos os métodos de "WriteObject" e "writeutf". O método WriteObject é usado para escrever o fluxo da operação "Demo", e o método writeutf () leva o "S1" para escrever a string na saída como um fluxo básico. Depois disso, lemos o objeto com o método readObject e exibimos a string. O método Readfields é empregado para ler os campos do "S2". A declaração IF é chamada para Validação do Register. O bloco de captura tratará as exceções de entrada e saída dos fluxos.

Em seguida, temos uma classe de “demonstração” para serialização da string e para a validação de objetos desserializados, e também implementamos a classe ObjectInputValidation. Aqui, definimos o valor da string para a variável "S2". Temos um método "readObject" para esta classe, que tem o método Readfields para ler campos e o método do registroValidação. Em seguida, retorne a string dentro do "S2" ao método principal.

Compilar e executar o script de Java acima mencionado resultará no seguinte resultado.

Exemplo 3: Usando o método getfields () para obter o campo da classe em Java no Ubuntu 20.04

O campo público desta classe, juntamente com seus membros, pode ser obtido usando a função getfield () do “java.Lang.Classe ”Classe. A função retorna objetos de campo que representam o campo solicitado desta classe.

Nossa classe "getfield" é criada com o objeto "myobj" dentro dele. Em seguida, empregamos o principal método dentro da classe. Lá, temos uma variável de nome de classe que invocou o método forname (). O objeto vinculado à classe será retornado por este método. Depois disso, utilizamos o método getfield () para obter o campo da classe.

Depois de compilar o código, recebemos o nome do objeto de classe e o campo da classe abaixo.

Conclusão

Para ler dados serializados para transmissão de rede, utilize os métodos readfields (). Os valores do campo serializável são lidos no fluxo usando o método Readfields, o que os torna acessíveis através da classe Getfield. Um método de classe readObject serializável é o único local do qual o método Readfields pode ser chamado. Além disso, introduzimos outro método que é Getfield () que retorna o nome de campo da classe especificada.