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

Método construtor da classe String

class A {
    public static void main(String[] args) {
        String s2 = new String(null);
        System.out.println(s2);
    }
}

O Exercício 11 acima tem a seguinte resposta:

Não compila pois String possui diversos construtores que recebem um argumento: o compilador não sabe qual deles você deseja invocar pois os tipos que são argumentos do construtor não possuem herança entre si (um não herda necessariamente do outro).

Não entendi muito bem o comentário sobre as heranças. Agradeço se alguém puder esclarecer.

2 respostas
solução!

Opa Luciano, tudo bom?

Então, é o seguinte, a classe String possui diversos contrutores, vamos pegar 2 por exemplo:

String (String original) { ... }

e

String (char[]  value) { ... }

Ambos os contrutores recebem objetos, ok? o primeiro uma outra String, e o segundo um array de chars. Quando tentamos invocar um código assim:

String txt = new String(null);

Estamos passando null para o construtor. null é o valor default de qualquer objeto, tanto de String quanto do char[]. O compilador ao ver este código não consegue saber qual dos construtores você estava tentando invocar, já que ambos poderiam receber null. Sempre que há ambiguidade, ocorrerá um erro de compilação.

Ficou mais claro?

Abraços

Perfeito. Muito obrigado pela explicação.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software