Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Como verificar se a classe Integer também reescreve o método toString?

Não estou conseguindo resolver esse exercício, quem conseguiu por favor me passe o código.

Como verificar se a classe Integer também reescreve o método toString?

A maioria das classes do Java que são muito utilizadas terão seus métodos equals e toString reescritos convenientemente.

Aproveite e faça um teste com o método estático parseInt, recebendo uma String válida e uma inválida (com caracteres alfabéticos), e veja o que acontece!

8 respostas

Olá Luciano.

Você pode abrir a documentação da classe em:Documentação Integer e verificar seus métodos.

Quanto ao teste: Se você utilizar o método estático da classe Integer, parseInt, com uma String válida ele retorna o int que reproduz o int dentro da String, se utilizar uma String inválida o método lança uma Exception. NumberFormatException para ser mais exato.

Ola Luciano, para verificar isso basta você olhar na documentação como citou Luciano. Outra coisa que você pode fazer no Eclipse é criar um objeto Integer e depois usar o CTRL+ESPAÇO para saber quais métodos ele implementa. Se quiser visualizar a implementação clique no método e pressione F3. Att,

Crisostomo Kolling, vc falou para criar um objeto Integer. Tentei criar uma classe que estenda a classe Integer, mas não compila pois Integer é uma classe final. Consegui extender a classe IntegerSyntax e reescrever o método toString com sucesso. Só não sei se essa é a solução do exercício, pois o exercício pede para reescrever o metodo tostring da classe Integer. código que utilizei:

package br.com.empresa.banco.modelo;

import javax.print.attribute.IntegerSyntax;

@SuppressWarnings("serial")
public class Inteiro extends IntegerSyntax {
    int valor;

    public Inteiro(int valor) {
        super(valor);
        this.valor = valor;
    }

    @Override
    public String toString() {
        return "toString " + this.valor;
    }
}

Os testes com parseInt foram ok.

Cara, não sei se está certo. Sou novo no java. Se puder me ajudar agradeço. Fiz assim:

Resposta 1) basta criar uma variável e utilizar CTRL+ESPAÇO nela para saber.

Integer intTeste = new Integer(0);
        System.out.println(intTeste.toString());

        String aux0 = new String("0000");
        String aux1 = new String("00a0");

        // teste com parseInt certo
        intTeste.parseInt(aux0);
        System.out.println(intTeste.toString());

        // teste com parseInt errado
        intTeste.parseInt(aux1);
        System.out.println(intTeste.toString());
solução!

Olá Luciano, tudo bem?

Vamos imprimir um objeto do tipo Integer no console? Como fazer?

System.out.println(new Integer(3));

Desta forma, o println irá chamar pra gente o método toString do que estamos pedindo pra ele imprimir.

Mas, o que será impresso pra gente no console? O número três, correto? Vamos analisar a implementação do toString padrão (herdada por todas as classes implicitamente):

public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }

Podemos ver que a implementação original de toString, retorna pra gente o nome da classe seguido do seu Hashcode. É isso que temos ao executar toString de Integer? Não, temos um número! No nosso caso o número três. Portanto, podemos concluir que o método toString de fato foi reescrito. Tudo bem? :)

Agora, Crisostomo Kolling, em relação ao seu exemplo, tá certíssimo! Você passou uma String pro método parseInt e funcionou. Depois tentou passar uma inválida e recebeu um NumberFormatException. Só tenho uma única recomendação para você:

Evite criar uma String desta forma:

String nome = new String("Leonardo");

Por que? Quando criamos uma String chamando o construtor, ele irá criar para nós uma nova instância da mesma String que foi passada por argumento do construtor. Raríssimos são os casos que você vai precisar de uma nova instância da mesma String. Portanto, sempre que for criar uma String faça:

String nome = "Leonardo";

OBS: Mais detalhes sobre isso: http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#String(java.lang.String)

Tudo bem?

Forte abraço!

Obrigado!

Opa, não tinha visto que o exemplo era do Crisostomo Kolling. Corrigido!

OBS: Irei fechar o tópico, qualquer coisa crie outro. Ok?

Abraços.

Leonardo, Você disse para o crisostomo evitar criar String usando "new String". Eu peguei o exemplo dele e fiz como você orientou e funcionou: String nome = "Leonardo"; Tentei fazer o mesmo com o Integer, substituindo: Integer intTeste = new Integer(0); por: Integer intTeste = 0; mas deu erro: type mismatch: cannot convert from int to Integer Por que deu este erro? O raciocínio não é o mesmo?