2012-05-13 62 views
5

我有如下的主要類:訪問目的是在一個類中創建到另一個

public class classB{ 

    public classC getObject(String getstring){ 
    return new classC(getstring); 
    } 
} 

classC有一個構造器:

public class classC{ 

String string; 

public classC(String s){ 
    this.string = s; 
} 

public methodC(int i){ 
    <using the `string` variable here> 
} 
} 

現在我將要使用的classAclassB(這當然是classC的一個實例)中創建的對象。如從用戶的一些動作創建的變量和存儲在classB,並且這將在classC的方法被進一步用於

public classA{ 
    int a = 0.5; 

    <Get the object that was created in classB>.methodC(a); 

} 

這是必要的。創建一個新的對象將會把我的變量設置爲null,這不是我的意圖。

我該如何做到這一點?

+0

需要更多信息...最好是您的完整代碼.. – WickeD

+2

問題不可理解......真正的問題是什麼? – aleroot

+2

真的不能理解...... –

回答

1

假設Brand是一個輕量級的對象,並且Run是重量級的,然後用輕量級對象的容器創建一個字段並隱藏它是個不錯的主意。

Brand需要訪問它屬於它可以與映射做容器,但我們只是注入RunBrand所以它更好地貫徹落實Runable或JSR330註解吧。以正常的方式通過Run訪問容器。

class MainClass { 
    public static void main(String[] args) { 
    Run r = new Run(); 
    } 
} 

class Run { 
    private Container con1 = new Container(); 

    public Run() { 
    Brand cola = new Brand("Coca Cola"); 
    Brand pepsi = new Brand("Pepsi"); 

    // Creates the container object "con1" and adds brands to container. 
    add(cola); 
    add(pepsi); 
    } 
    public void add(Brand b){ 
    con1.addToList(b); 
    b.setRun(this); 
    } 

    public Container getContainer() { 
    return con1; 
    } 
} 

class Brand { 
    // In this class I have a method which needs to accsess the con1 object 
// containing all the brands and I need to access the method 
    private String name; 
    private Run run; 

    public Brand(String name){ 
    this.name = name; 

    } 
    public void brandMethod() { 
    if(getRun().getContainer().methodExample()) {  // Error here. Can't find "con1".** 
     System.out.println("Method example returned true."); 
    } 
    } 


    public Run getRun() { 
    return run; 
    } 

    public void setRun(Run run) { 
    this.run = run; 
    } 
} 

class Container { 
    // This class is a container-list containing all brands brands 
    private ArrayList<Object> list = new ArrayList<Object>(); 

    public boolean methodExample(){ 
    return false; 
    } 

    public void addToList(Object o) { 
    list.add(o); 
    } 
} 
0

如果你想在CLASSB創建對象靜態字段應該做的工作

public class classB { 

    public static objectCReference; 

    public classC getObject(String getstring){ 
    objectCReference = new classC(getstring); 
    return objectCReference; 
    } 
} 

然後你就可以在

public classA { 
    int a = 0.5; 

    if (classB.objectCReference != null) { // Make sure to null check 
    classB.objectCReference.methodC(a); 
    } 

} 

訪問參考也請跟隨語言慣例,並用大寫字母開始你的班級名稱。

相關問題