[英]Java different instances of a class
為簡單起見,我使用導致問題的關鍵要素復制了我遇到的錯誤。
我有三個主要類,第一個是初始化和設置方法(主要)的主要類。 然后,我有了一個數據庫類,該類將從數據庫中提取數據到代碼中(Init)。 第三,我有一個用於處理GUI元素(訪問器)的GUI類。
我遇到了一個問題,當我從GUI調用accessor.print()方法時,在主類(init.setUp)的數據庫類(accessor.setUp)中初始化的變量(消息)顯示為null。 ActionListenerEvent之后的類。
我知道發生這種情況是因為同一類存在不同的實例,但是我不確定如何解決它。
這是主要的類:
public class main {
public static void main(String[] args){
Init init=new Init();
init.setUp();
Accessor acc=new Accessor();
acc.tryAccess();
}
}
這是init類:
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();
}
}
提前致謝。
您有太多的初始化對象,並且一個與另一個無關。 很明顯,設置一個實例不會對另一個實例產生任何影響,而要解決此問題,您只需要一個實例。 更改
public class main {
public static void main(String[] args){
Init init=new Init();
init.setUp();
Accessor acc=new Accessor();
acc.tryAccess();
}
}
至
public class main {
public static void main(String[] args){
Init init=new Init();
init.setUp();
Accessor acc=new Accessor(init); // pass it in!
acc.tryAccess();
}
}
然后將參數Init對象傳遞到Accessor對象的init字段中。
public class Accessor {
private Init init;
public Accessor(Init init) {
this.init = init; // initialize field
}
public void tryAccess(){
// Init init=new Init(); // *** don't create a new instance!! ***
init.print();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.