如何从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?