this:不能在静态上下文中使用它

时间:2013-05-01 09:08:00

标签: java this

你可以帮我解决下面的代码。错误是:“不能在静态上下文中使用它”

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);
    }
}

5 个答案:

答案 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)

写这意味着在静态上下文中,我们期望返回对象的地址。尽管有一个对象调用静态方法是完全合法的,但这不是义务。因此,如果没有为该类创建对象,则编译器将停止发生任何错误的可能性。