据我所知,这是指当前的对象。因此,我不能使用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
}
}
答案 0 :(得分:5)
正如您所提到的,this
关键字用于引用当前对象而不是类。在您的情况下,您尝试在静态方法this
中使用它(main
)。另请查看link。
答案 1 :(得分:3)
main()
是一个static方法(类方法),它不从对象运行。由于它位于类上下文中,因此关键字this
没有意义(它没有可引用的对象)。
答案 2 :(得分:1)
在java中,这个关键字用于引用当前对象但main是静态方法,在static方法中这个关键字没有任何意义。
public class Line {
public static void main(String[] args){
System.out.println(this);
} }
输出:编译时错误“非静态变量,这不能从静态上下文引用”。