Dúvida ref. acesso à método não-static

3 respostas
L

No site www.examulator.com tinha o seguinte código:

public class Ref{
	public static void main(String argv[]){
		Ref r = new Ref();
		r.amethod(r);
    }
	
    public void amethod(Ref r){
		int i=99;
		multi(r);
		System.out.println(i);
    }
	
    public void multi(Ref r){
		r.i = r.i*2;
    }
}

Dentre as opções que tinham de resposta a correta era
error at compile time. Até ai tudo bem, mas a explicação do site era que o método multi não iria conseguir acessar a varável i. Está certo também, mas antes desse erro não daria erro por causa do acesso a um método não static (amethod) a paritri de um static(main)? Eu fiquei curioso pois entrei no site e onde estou não tem como compilar um program para ver o que vai acontecer.

3 Respostas

Bani
C:>javac Ref.java

Ref.java:12: cannot resolve symbol

symbol  : variable i

location: class Ref

r.i = r.i<em>2;

^

Ref.java:12: cannot resolve symbol

symbol  : variable i

location: class Ref

r.i = r.i</em>2;

^

2 errors
Rafael_Steil

O erro que vc questionou nao acontece pq uma instancia da classe foi criada para acessar o metodo:

Ref r = new Ref&#40;&#41;;
r.amethod&#40;r&#41;;

Se a chamada fosse apenas

amethod&#40;new Ref&#40;&#41;&#41;;

ai sim daria erro, pois o metodo “amethod” nao eh static e nao estaria atrelado a alguma instancia.

Rafael

L

Entendi

Obrigado

Criado 15 de fevereiro de 2003
Ultima resposta 15 de fev. de 2003
Respostas 3
Participantes 3