Pergunta boba, sobre construtores

public class PowerSupply{

     public PowerSupply(String voltage){
        System.out.println ("PowerSupply(String) executed");
     }
     public PowerSupply(Object voltage){
        System.out.println ("PowerSupply(Object) executed");
     }
     public PowerSupply(){
       System.out.println ("No argument constructor execute");
    }
    
    public static void main(String[] args) {
       PowerSupply ps = new PowerSupply(null);
    }
 }

Alguém poderia me dizer pq usa a construtora de string?

fiquei abismado … :frowning: jurava que era Object que ia chamar até agora to boiando

Ué… e porque não… você está se referindo ao Object… ou qual a tua dúvida…

Se tu instanciar o objeto com uma String… ele vai pra String… e assim por diante… se for por Object ele vai pro Object… e se nao passar nada… ele vai pro terceiro…

Agora se tu passa outro Objeto… ai eu nao sei… se da erro, ou se vai pro Object!

Abraços!

pois é … na teoria quase tudo extende objeto… então era pra ir ali pra construtora que recebe objeto…

mas o nulll … não entendi pq ele entendeu o null como string :frowning: :roll:

Quando há ambigüidade, o construtor mais específico é escolhido.

null serviria tanto para Object quanto String. Como String é mais específico, é o escolhido.
Aliás, todos objetos extendem Object, até os arrays.

Faz os seguintes testes:

1- Tire o construtor com String e adicione um com Float e outro com Number.
O primeiro a ser escolhido será Float, depois Number, depois Object.

2- Adicione Number.
Vai dar erro de compilação, já que ele não sabe qual escolher.

pois é achei muito louca essa questão…

eu tinha marcado compilation problem, pq achei que nao podia ter dois contrutores recebendo um atributo objeto… depois marquei a construtora do objeto pq achei que ele ia pro mais genérico (ao contrário eheheh)

valeu ae gurizote!

:wink: