如何从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 }
你所要求的并没有多大意义。 只需使您的方法非静态,因为静态方法不能绑定到实例。
静态方法不适用于特定的实例/对象,它们是类级别的东西。 因此,他们没有给出实例引用。 所以,不,你不能这样做。
如果您可以使用其他方法计算出哪个实例引用,则可以访问它的非静态方法。
或者,或者,重新构建您的类,以便它是一个非静态方法。
你不能。 静态方法与任何特定状态(也称为任何非静态成员)无关。 换句话说,它们独立于类的任何特定实例运行,因此它们不能依赖于非静态成员。
非静态成员变量“是状态”。 它是该类的特定实例的状态。
当你说你想要访问非静态成员变量时,它就像说“想要访问类XXX的特定实例的非静态成员变量”一样好,我的意思是粗体部分是隐式的。
因此,说“我可以使用新实例访问它”是没有意义的。
- 使用jquery ajax调用rest webservice?
- 私有方法的方法拦截器
- 处理spring mvc中的包装exception
- 无法运行或jai_imageio或ImageIO.getImageReadersByFormatName无法获取Object
- 是否可以在Hibernate / JPA中动态定义列名?
- ClassFormatError:在类文件javax / mail / MessagingException中非本机或抽象的方法中的Absent Code属性
- Java和Maven构建器如何在eclipse中协同工作?
- Lambda表达式:引用特定对象的实例方法
- PHP命令shell_exec()不适用于我的自定义Java app5