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.