静态方法是否有可能在Java中引用“this”?

时间:2013-09-08 16:20:30

标签: java

我是Java新手。我知道static是类级别而this是对象级别但请告诉我static方法是否可以引用java中的this指针?

3 个答案:

答案 0 :(得分:4)

this方法/块中引用static是没有意义的。可以在不创建Static的情况下调用instance方法,因此this不能用于引用instance字段。

如果您尝试将this置于static方法中,编译器将抛出错误

  

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

答案 1 :(得分:1)

不,在静态上下文中无法访问this。 June Ahsan说了你可能需要知道的一切,但我想补充一点背景。

对象方法和字节代码级别上的静态方法之间的唯一区别是对象方法的额外第一个参数。可以通过this访问此参数。 由于静态方法缺少此参数,因此没有this

示例:

class MyClass {

    private int b;

    public void myMethod(int a){
        System.out.println(this.b + a);
    }

    public static void myStaticMethod(int a){
        System.out.println(a*a); // no access to b
    }
}

在字节代码级别上(粗略地说,因为字节代码看起来不像这样)

class MyClass {
    int b;
}

void myMethod(MyClass this, int a){
    System.out.println(this.b + a);
}

static void myStaticMethod(int a){
    System.out.println(a*a); // no access to b
}

答案 2 :(得分:0)

不,但您可以像这样在类中创建类的静态对象  private static ClassName instance;然后您可以在构造函数中使用instance = this;进行设置。然后,您可以在静态方法中使用它。