Minha dúvida é porque quando executo o código abaixo o construtor de string é chamado ? Alguém pode me dizer ?
Segue a classe de teste abaixo.
public class Teste {
public Teste(){
System.out.println("Construtor vazio");
}
public Teste(String s){
System.out.println("Construtor string");
}
public Teste(Object o){
System.out.println("Construtor object");
}
public static void main(String[] args) {
Teste t = new Teste(null);
}
quando você dá o new Teste(null); ele tenta pegar a menor refêrencia possivel, no caso Object > String, logo ele pega String…
public class Teste {
public Teste(){
System.out.println("Construtor vazio");
}
public Teste(Integer x){
System.out.println("Construtor object");
}
public Teste(long x){
System.out.println("longgg");
}
public static void main(String[] args) {
Teste t = new Teste(434);
}
}
aqui tem algo parecido… mesmo tem um Objeto Integer, e eu passando um inteiro primitivo como argumento, ele retorna “longgg”
o programa tende a chamar o menor na hierarquia
bem, isso é o que eu acho… talvez tenha me equivocado em algo… mas aih alguem corrija !