ToString de objeto em java

ToString de objeto em java
Em Java, um objeto é o exemplo de uma classe, ou é uma matriz. Há uma aula chamada, objeto. Este objeto não deve ser confundido com um objeto, que é a instância de uma classe. "Objeto", começando com a mancha 'O', é o nome de uma classe, uma aula especial. Em Java, o ancestral superior de todas as classes é essa classe, objeto. O objeto pode ser instanciado em uma classe, objeto (opcionalmente nomeado, com minúsculas, 'O'). No entanto, não é necessário instanciar a classe especial, objeto. Todas as classes, que são predefinidas ou classes definidas pelo programador, são herdadas desta classe, objeto.

A classe de objeto tem um método chamado, ToString (). Este método retorna uma representação de string do objeto de uma classe normal. Todas as classes herdam este método do objeto de classe. Cada matriz (como objeto) tem um método semelhante.

Infelizmente, essa representação da string do objeto é um código de texto curto (texto literal de string curto). Não é muito útil, embora possa ser decodificado. Essa decodificação não é abordada neste artigo. E assim, o programador precisa substituir esse método para ter uma representação do objeto; O usuário do computador vai apreciar isso. A substituição é abordada neste artigo.

Comportamento padrão do método tostring ()

Tipos primitivos

Tipos primitivos como o int existem por si só. No entanto, cada tipo primitivo em Java tem uma classe correspondente (invólucro). Quando se trata de converter objetos primitivos em cordas, são as classes correspondentes que devem ser usadas. O programa a seguir ilustra isso para o int. A classe correspondente para int é a classe inteira.

classe pública theClass
public static void main (string [] args)
Número inteiro em = 5;
String str = em.para sequenciar();
Sistema.fora.println (str);

A saída é 5. Se "Inteiro" fosse digitado como INT, uma mensagem de erro teria sido emitida no horário de compilação. O método tostring () da maior classe de ancestrais foi empregado aqui, sem nenhum problema. Isto é, o número inteiro, 5 foi convertido em uma corda e impresso sem nenhum problema. No entanto, se a classe fosse uma classe definida por programador ou outro tipo de classe predefinida, haveria algum problema.

Classe definida pelo programador

Considere o seguinte programa que imprime a representação do objeto definido pelo programador, OBJ:

classe Aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
Sistema.fora.println ("visto");


classe pública theClass
public static void main (string [] args)
Aclass obj = new aclass ();
String str = obj.para sequenciar();
Sistema.fora.println (str);

A saída é:

ACLASS@6FF3C5B5

Este é um texto de codificação curto - não é muito útil para o usuário. O usuário pode ter preferido algo como:

prop1 => 1;
prop2 => 2;

Essas são as diferentes propriedades (campos) e seus valores. O que separa uma propriedade do seu valor na impressão é "=>", que deve ser introduzido pelo programador. Em uma pergunta como essa, os métodos geralmente não são impressos.

Variedade

Considere o seguinte programa, onde a matriz como objeto, arr, deve ser impressa:

classe pública theClass
public static void main (string [] args)
String [] arr = new String [] "One", "Two", "Three";
String str = arr = arr =.para sequenciar();
Sistema.fora.println (str);

A saída é,

[Ljava.Lang.String;@d716361

Qual é outro código de texto. É isso que você queria? Você adoraria ver algo como:

um dois três

onde o separador de elementos está ",".

Lista

Considere o seguinte programa, onde um Arraylist como um objeto, Al, deve ser impresso:

importar java.util.*;
classe pública theClass
public static void main (string [] args)
Arraylist al = new ArrayList ();
al.Adicione um"); al.add ("dois"); al.add ("três");
String str = al.para sequenciar();
Sistema.fora.println (str);

A saída é:

[um dois três]

A saída é muito boa! Isso significa que o programador não precisa substituir o objeto.ToString () Método quando se refere à Arraylist (ou possível lista em geral). No entanto, quando se trata de objetos definidos pelo programador ou da matriz, o programador precisa substituir o método.

Mapa

Considere o seguinte programa, onde um hashmap como objeto, HM, deve ser impresso:

importar java.util.*;
classe pública theClass
public static void main (string [] args)
Hashmap hm = new hashmap ();
HM.put ("um", 1); HM.put ("dois", 2); HM.put ("três", 3);
String str = hm.para sequenciar();
Sistema.fora.println (str);

A saída é:

One = 1, dois = 2, três = 3

A saída é muito boa! Os pares de chave/valor são distinguíveis, com o separador de elementos, sendo ",". Isso significa que o programador não precisa substituir o objeto.ToString () Método, quando se preocupa com o hashmap (ou possível mapa em geral). No entanto, quando se trata de objetos definidos pelo programador ou da matriz, o programador precisa substituir o método.

O restante deste artigo lida com a substituição do objeto.ToString () Método herdado do objeto definido por programador e da matriz.

ToString substituído ()

Variedade

Com a matriz, hoje, a substituição é indireta ou solução alternativa. Java tem uma aula chamada, matrizes. Esta aula tem o método de tostring, já substituído por Java. Na classe, o método tostring () é estático: isso significa que a classe das matrizes não precisa ser instanciada para o seu método tostring () a ser usado. Aqui, o método tostring () leva um argumento, que é o identificador da matriz. Produz uma saída, onde o separador está ",". Matrizes de aula, está no java.util.* pacote. O programa a seguir mostra a solução alternativa para matrizes:

importar java.util.*;
classe pública theClass
public static void main (string [] args)
duplo [] arr = novo duplo [] 10.1, 20.2, 30.3;
String str = matrizes.toString (arr);
Sistema.fora.println (str);

A saída é:

[10.1, 20.2, 30.3]

A saída é muito boa! E assim, hoje, o programador não precisa mais codificar um método de substituição, para o método ToString (), para Java Array. O programador faz uma solução alternativa com as matrizes e seu toque ().

Objeto definido pelo programador

Com a classe definida pelo programador, o método tostring () da classe de objeto só precisa ser redefinido, conforme ilustrado na seguinte classe definida por programador:

classe Aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
Sistema.fora.println ("visto");

@Sobrepor
public string tostring ()
String str1 = "prop1 =>" + this.Prop1;
String str2 = "prop2 =>" + this.Prop2;
return str1 + '\ n' + str2;

A técnica é usar o operador de concatenação de string, + para se juntar aos literais que não são de cordão com literais de string. O "@Override" anterior impede certos erros no método substituído. Redefinição aqui está substituindo. Uma classe definida pelo programador corresponde ao objeto definido por programador. O método Java Main () a seguir é apropriado para a classe acima:

classe pública theClass
public static void main (string [] args)
Aclass obj = new aclass ();
String str = obj.para sequenciar();
Sistema.fora.println (str);

A saída é:

Prop1 => 1
Prop2 => 2

Esta saída é melhor apreciada pelo usuário do que o código de texto curto, “Aclass@6FF3C5B5”. Não se esqueça que a definição primordial ocorre na classe de interesse.

Conclusão

A classe de objeto tem um método chamado, ToString (). Este método retorna uma representação de string do objeto de uma classe. Todas as classes herdam este método do objeto de classe. Cada matriz (como objeto) tem um método semelhante. Cada classe precisa substituir esse método, indiretamente ou diretamente.

Com tipos primitivos, use os tipos de referência (e.g., Inteiro para int), onde Java já possui um método ToString () substituído predefinido, que é satisfatório. Com listas e mapas também, o Java já possui um método ToString () substituído () predefinido, que é satisfatório. Com uma matriz, faça uma solução alternativa: use o método ToString () da aula de matrizes. Com a classe definida pelo programador, faça a substituição real, usando o operador de concatenação da String, +, o mais rápido possível.