Я понимаю, что это относится к текущему объекту. Поэтому вместо того, чтобы использовать objectname.fun(objectname.nonstaticmember)
, почему я не могу использовать objectname.fun(this.nonstaticmember)
Почему здесь нельзя использовать это ключевое слово?
См. Пример ниже и посмотрите последние два комментария в конце.
public class Question
{
int data;
void myfun(int data)
{
System.out.println("data=="+data);
}
public Question(int data)
{
this.data = data;
// TODO Auto-generated constructor stub
}
public static void main(String[] args)
{
Question question = new Question(10);
//question.myfun(question.data);//WORKS
question.myfun(this.data);//DOES NOT WORK
}
}
Ох, так что «это» внутри функции относится к объекту, который использовался для вызова этой функции? Так как никакие объекты не использовались для вызова main (будучи статическими), поэтому он дал бы мне «Нельзя использовать это в статическом контексте». Спасибо, не знал – PepperBoy
@PepperBoy: Проще говоря, 'this' относится к текущему экземпляру, а ключевое слово' static' всегда указывает на то, что принадлежит всему классу, а не конкретному экземпляру. Поэтому 'this' не имеет смысла для статических методов. –