Uma coca cola para quem coseguir explicar o que acontece aqui… 8)
classMountain{staticStringname="Himalaya";staticMountaingetMountain(){System.out.println("Getting Name ");returnnull;}publicstaticvoidmain(String[]args){System.out.println(getMountain().name);}}
cara mais c eu tira o STATIC da String name… ele nao funciona pq!!!/
nbluis
Por que dai, tu vai tar chamando o nome do objeto, e este por sua vez é null, logo vai dar uma null pointer exception certo?
É que como tu chama um método estático, ele não acessa um atributo de método, mas sim um atributo da classe montain…
nbluis
Ganhei a coca-cola???
Deh
O que deve ser ressaltado é que quando você chama algum atributo static, o que vale é o tipo do Objeto:
você poderia fazer assim ainda, para ficar mais visivel:
Montainm=null;System.out.println(m.name);
o compilador troca o “m” por “Montain.name”, mesmo sendo “null”, ela ainda é do tipo Montain… e o método(da classe que o eltonk citou) retorna uma ‘Montain’ também…
LPJava
seu metodo eh statico entao ele compartilha com todos o seu tipo de return e vc colocou o tipo de return null para o tipo de retorno que eh um objeto Montain. agora se vc pode para retorna name era diferente no seu metodo desde que o tipo do metodo seja igual do tipo que deseja retornar atraves desse metodo… ou passe no teste é-um.