【发布时间】:2017-02-08 22:07:40
【问题描述】:
为简单起见,我复制了导致问题的关键元素所遇到的错误。
我有三个主类,第一个是初始化和设置方法的主类(main)。然后我有一个数据库类,它将数据从数据库中提取到代码中(初始化)。第三,我有一个处理 GUI 元素(访问器)的 GUI 类。
我遇到了一个问题,当我调用 accessor.print() 方法时,我在主类 (init.setUp) 的数据库类 (accessor.setUp) 中初始化的变量(消息)显示为 null来自 ActionListenerEvent 之后的 GUI 类。
我知道这是因为同一个类有不同的实例,但我不知道如何解决它。
这是主类:
public class main {
public static void main(String[] args){
Init init=new Init();
init.setUp();
Accessor acc=new Accessor();
acc.tryAccess();
}
}
这是初始化类:
public class Init {
public String message;
public void setUp(){
message="Hello World";
}
public void print(){
System.out.println(message.length());
}
}
这是访问器类:
public class Accessor {
public void tryAccess(){
Init init=new Init();
init.print();
}
}
提前致谢。
【问题讨论】:
-
好吧,你为什么要使用单独的实例?
-
您可以通过构造函数将创建的init实例传递给访问器,也可以作为tryAccess()方法的参数传递,因此您只有一个Init实例。如果需要跨实例访问消息,您也可以将消息声明为静态变量。