Questão - referencia nulla

6 respostas
eltonk

Uma coca cola para quem coseguir explicar o que acontece aqui… 8)

class Mountain
{
  static String name = "Himalaya";
  static Mountain getMountain()
  {
     System.out.println("Getting Name ");
     return null;
  }
  public static void main(String[ ] args)
  {
    System.out.println( getMountain().name );
  }
}

6 Respostas

nbluis

Putz … essa foi feia…

mas é um pouco lógico …

Ao retorno do método montain ele retorna um Montain = null;

Logo, quando acessamos um atributo ou método estático, ele não busca da referencia null, mas sim da classe Montain.

É a mesma coisa que se eu fizesse.

class Mountain {
	static String name = "Himalaya";

	public static void main(String[] args) {
		Mountain m = null;
		System.out.println(m.name);
	}
}

Até…

A

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:

Montain m = 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.

Criado 21 de março de 2007
Ultima resposta 22 de mar. de 2007
Respostas 6
Participantes 5