Método toString()
Parte da seção Programação Orientada a Objetos do Journey de Java da Coddy. Lição 41 de 87.
Every class em Java herda da class Object, que fornece vários method úteis. Um dos mais comumente substituídos é toString(), que retorna uma representação textual de um object.
Por padrão, toString() retorna o nome da classe seguido pelo código hash do objeto, o que não é muito útil:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Person p = new Person("Alice", 25);
System.out.println(p); // Person@15db9742Ao sobrescrever toString(), você pode fornecer uma saída significativa que descreva o estado do object:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person[name=" + name + ", age=" + age + "]";
}
}
Person p = new Person("Alice", 25);
System.out.println(p); // Person[name=Alice, age=25]O toString() method é chamado automatically quando você imprime um object ou o concatena com uma string. Isso torna a depuração muito mais fácil, pois você pode ver rapidamente o conteúdo de um object sem escrever código extra.
Desafio
FácilVamos criar um sistema de inventário de produtos que exibe informações significativas sobre itens usando implementações personalizadas de toString(). Você criará uma Product class que substitui o toString() method padrão para fornecer uma representação clara e legível de cada produto.
Você organizará seu código em dois arquivos:
Product.java: Create uma class que represente um item do inventário. Cada Product tem three private fields:name(String),price(double) equantity(int). Inclua um constructor que initializes os three fields. Substitua otoString()method para retornar uma string formatada neste formato exato:Product[name=X, price=Y, quantity=Z], em que X, Y e Z são os actual values dos fields. O price deve ser exibido como um número simples (não é necessário nenhum format especial).Main.java: Dê vida à sua class Product criando e exibindo produtos. Você receberá three inputs: um nome de produto (String), um price (double) e uma quantity (int). Crie um Product com esses values e, em seguida, simplesmente Print o product object directly usandoSystem.out.println(). Graças ao seutoString()method substituído, isso exibirá automatically as informações formatadas do product em vez da saída padrão enigmática!
Você receberá three inputs: o nome do product, o price (double) e a quantity (int).
Observe como imprimir o object diretamente chama seu toString() method automatically. É isso que torna a depuração e o registro muito mais fáceis em aplicações reais!
Experimente você mesmo
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Ler entradas
String name = scanner.nextLine();
double price = scanner.nextDouble();
int quantity = scanner.nextInt();
// TODO: Crie um objeto Product com os valores de entrada
// TODO: Imprima o objeto product diretamente
// (Isso vai chamar automaticamente o seu método toString()!)
}
}
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Programação Orientada a Objetos
1Fundamentos de POO
Arquivos ExternosIntrodução à POOClasses vs ObjetosA Palavra-chave thisMétodosCampos (Atributos)Método ConstrutorSobrecarga de ConstrutorRecapitulação - Calculadora Simples4Herança
Herança Básica (extends)A Palavra-chave superSobrescrita de Método (@Override)Encadeamento de ConstrutoresA Classe ObjectHerança Simples e MultinívelPor que não há Herança Múltipla de ClassesRecapitulação - Hierarquia de Funcionários7Métodos Especiais e a Classe Object
Método toString()equals() e hashCode()Método clone()compareTo() e ComparableInterface ComparatorRecapitulação - Ordenação Personalizada2Modificadores de Acesso e Encapsulamento
Visão Geral dos Níveis de AcessoMétodos Getter e SetterOcultação de InformaçõesA Palavra-chave finalRecapitulação - Gerenciador de Conta Bancária5Polimorfismo
Fundamentos de Sobrecarga de MétodosSobrescrita de Métodos (Tempo de Execução)Upcasting e DowncastingO Operador instanceofClasses e Métodos AbstratosRecapitulação - Calculadora de Formas8Conceitos Avançados de OOP
Composição vs HerançaAgregação vs ComposiçãoClasses Internas, Aninhadas e AnônimasEnums e Métodos de EnumRecords (Java 16+)Classes Seladas (Java 17+)11Padrões de Projeto Parte 1
Introdução aos Padrões de ProjetoPadrão SingletonPadrão FactoryPadrão BuilderPadrão ObserverPadrão Strategy3Propriedades de Classe e Membros Estáticos
Variáveis de Instância vs EstáticasMétodos EstáticosBlocos EstáticosConstantes (static final)Recapitulação - Contador e Utilitário6Interfaces e Classes Abstratas
Introdução às InterfacesImplementando InterfacesImplementação de Múltiplas InterfacesDefault e Static em InterfacesClasses Abstratas vs InterfacesInterfaces FuncionaisRecapitulação - Sistema de Pagamento9Generics
Introdução a GenericsClasses GenéricasMétodos GenéricosParâmetros de Tipos DelimitadosWildcards (?, extends, super)Recapitulação - Container Genérico12Padrões de Projeto Parte 2
Padrão CommandPadrão AdapterPadrão DecoratorPadrão Template MethodPadrão StatePadrão CompositePadrão IteratorPratique por conta própria: Compilador de Java online