如何从Java中的静态方法访问非静态成员?
我有一种情况,我必须从静态方法中访问非静态成员。 我可以用新实例访问它,但是当非静态成员将被重新初始化时,当前状态将会丢失。 如何实现这一点而不会丢失数据?
也许你想要一个单身人士。 然后,您可以从静态方法中获取该类的(唯一)实例并访问其成员。
基本的想法是
public class Singleton {
private static Singleton instance = null;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
然后在一些静态方法中:
public static someMethod() {
Singleton s = Singleton.getInstance();
//do something with s
}
你所要求的并不合理。 只是让你的方法是非静态的,因为你的静态方法不能绑定到实例。
静态方法不适用于特定的实例/对象,它们是一个类级别的东西。 因此,他们没有得到实例参考。 所以,不,你不能这样做。
如果您可以计算出使用其他方式的实例引用,则可以访问它的非静态方法。
或者,也可以重新构建您的类,使其成为一种非静态方法。
链接地址: http://www.djcxy.com/p/96365.html上一篇: how to access a non static member from a static method in java?
下一篇: In C++, is it safe/portable to use static member function pointer for C API callbacks?