反射:在静态方法中获取调用对象

时间:2011-07-12 15:49:03

标签: java reflection static static-methods

是否可以在此方法中获取调用静态方法的对象?

我有这段代码:

class A{
    static void foo(){
    }
}
A a = new A();
a.foo();

我可以在方法a中获取实例foo()吗?

4 个答案:

答案 0 :(得分:2)

首先,你的代码不如程序员好。

这是因为静态方法是类级方法,应该在没有任何类实例的情况下调用。

推荐方法:

class A{
    static void foo(){
    }
}
A.foo();
  

我可以在foo()方法中获取实例吗?

不,你不能。 Because foo() is declared as static。所以你不能在那个方法中使用它,因为它包含对调用该方法的对象的引用。

答案 1 :(得分:1)

根据定义,static方法没有实例对象(静态方法不对特定对象进行操作,它们在类中仅为命名空间定义) - 所以

答案 2 :(得分:0)

不可能......静态方法没有引用,你必须通过它重新实现方法:

class A{
    static void foo(A theObject){
    }
}
A a = new A();
A.foo(a);

最好不要从对象实例中调用静态方法

答案 3 :(得分:0)

没有;这就是static的含义 编译器实际上完全忽略了实例。

使用实例方法。