2012-05-13 16 views
5

में एक वर्ग में बनाया मैं नीचे के रूप में एक प्राथमिक वर्ग है:पहुँच वस्तु किसी अन्य

public class classB{ 

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

classC एक contructor है: अब

public class classC{ 

String string; 

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

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

मैं एक classA जो का उपयोग किया जाएगा है ऑब्जेक्ट classB में बनाया गया है (जो निश्चित रूप से classC का उदाहरण है)। के रूप में एक चर classB में उपयोगकर्ता से कुछ कार्यों पर बनाई गई और संग्रहीत और इस आगे classC के तरीकों में इस्तेमाल किया जाएगा है

public classA{ 
    int a = 0.5; 

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

} 

यह इसलिए आवश्यक है। एक नया ऑब्जेक्ट बनाना मेरे चर को classB में प्रस्तुत करेगा जो शून्य पर सेट नहीं है जिसका इरादा नहीं है।

मैं इसे कैसे प्राप्त कर सकता हूं?

+0

अधिक जानकारी की आवश्यकता है ... अधिमानतः आपका पूरा कोड .. – WickeD

+2

प्रश्न समझ में नहीं आता ... असली सवाल क्या है? – aleroot

+2

वास्तव में समझ में नहीं आता है ... –

उत्तर

1

मान लें कि Brand एक हल्के वजन वाली वस्तुएं हैं और Run हेवीवेट है तो हल्के ऑब्जेक्ट्स के लिए कंटेनर के साथ एक फ़ील्ड बनाना और इसे छिपाना एक अच्छा विचार है।

लेकिन Brand जरूरतों कंटेनर यह करने के लिए यह मानचित्रण के साथ किया जा सकता है अंतर्गत आता है का उपयोग, लेकिन हम बस Brand को Run इंजेक्षन कर रहे हैं तो यह बेहतर 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); 
    } 

} 

में संदर्भ का उपयोग कर सकते करना चाहिए इसके अलावा का पालन करें भाषा सम्मेलन और पूंजी अक्षरों के साथ अपने वर्ग के नाम शुरू करें।

संबंधित मुद्दे