反射:在静态方法中获取调用对象
是否可以在该方法中获取调用静态方法的对象?
我有这样的代码:
class A{
static void foo(){
}
}
A a = new A();
a.foo();
我可以在方法 foo()
中获取实例 a
吗?
Is it possible to get an object that invoked static method in this method?
I have this code:
class A{
static void foo(){
}
}
A a = new A();
a.foo();
Can I get instance a
in method foo()
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
首先,你的代码不适合程序员。
这是因为静态方法是类级别的方法,应该在没有任何类实例的情况下调用。
推荐方法:
不,你不能。 因为声明了 foo()作为静态。因此,您不能在该方法内使用 this,因为 this 包含对调用该方法的对象的引用。
Firstly, your code isn't good as a programmer.
It is because static methods are class-level methods and should be called without any instance of class.
Recommended approach :
Nope, you can't. Because foo() is declared as static. So you can't use this inside that method, since this contains a reference to the object that invoked the method.
根据定义,
静态
方法没有实例对象(静态方法不对特定对象进行操作,它们在类中定义纯粹是为了命名空间)——所以没有。By definition, there is no instance object for a
static
method (static methods do not operate on a specific object, they are defined within a class purely for namespacing) -- so no.不是不可能的...静态方法没有引用,您必须将其重新实现为:
并且最好不要从对象的实例调用静态方法
No is impossible...the static method don't have the reference, you have to pass it reimplementing the method as:
and is better don't call the static method from the instance of the object
不;这就是
static
的含义。编译器实际上完全忽略了该实例。
使用实例方法。
No; that's what
static
means.The compiler actually completely ignores the instance.
Use an instance method.