你可以帮我解决下面的代码。错误是:“不能在静态上下文中使用它”
public class Sample2 {
/**
* @param args
*/
public static void main(String[] args)
{
Sample2 sam=new Sample2();
//Below code works fine
System.out.println(sam);
//Below code is displaying error
System.out.println(this);
}
}
答案 0 :(得分:28)
请参阅“this”关键字指的是当前对象,因为该方法属于优先级。因为,您不能使用类的实例调用静态方法。这就是为什么“这个”不能在上面的例子中用于静态方法,因为它试图打印当前没有创建的实例。所以,我认为这就是为什么你会遇到编译时错误。
答案 1 :(得分:17)
他们的关键字this
是指该类的实例。在静态上下文中,您没有实例,因此您无法引用它。
有关详细信息,请参阅以下答案:What is the meaning of "this" in Java?
答案 2 :(得分:2)
在java中,你不能在静态方法(静态上下文)中使用它。
Static
方法不指向封闭类的任何实例。
静态方法无论如何都不能引用“this”或“super”关键字
在此关键字
上提及official docs答案 3 :(得分:2)
如果我们尝试从静态上下文中访问它,编译器无法猜测您指的是哪个实例。 main是一种静态方法。
答案 4 :(得分:0)
写这意味着在静态上下文中,我们期望返回对象的地址。尽管有一个对象调用静态方法是完全合法的,但这不是义务。因此,如果没有为该类创建对象,则编译器将停止发生任何错误的可能性。