2012-05-13 20 views
5

Mam klasy podstawowej, jak poniżej:dostępu utworzony w jednej klasy do innego

public class classB{ 

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

classC ma contructor:

public class classC{ 

String string; 

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

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

Teraz Mam classA który będzie używany obiekt utworzony w classB (który jest oczywiście instancją classC).

public classA{ 
    int a = 0.5; 

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

} 

ta jest potrzebna jako zmienna jest tworzona na niektórych działań związanych z obsługą i przechowywane w classB i to będzie dalej stosowane w metodach classC „s. Utworzenie nowego obiektu spowoduje, że zmienna w ustawieniu classB zostanie ustawiona na wartość null, która nie jest przeznaczona.

Jak mogę to osiągnąć?

+0

Potrzebuję więcej informacji ... najlepiej pełnego kodu .. – WickeD

+2

Pytanie niezrozumiałe ... Jakie jest prawdziwe pytanie? – aleroot

+2

naprawdę niezrozumiałe ... –

Odpowiedz

1

Załóżmy, że Brand jest lekkim przedmiotem, a Run jest ciężki, a następnie tworzy pole z pojemnikiem na lekkie przedmioty i ukrywanie go jest dobrym pomysłem.

Ale Brand potrzeby uzyskania dostępu do pojemnika należy ona do można to zrobić z mapowaniem ale jesteśmy po prostu wstrzyknąć Run do Brand więc lepiej realizować Runable lub opisywanie go z JSR330. I dostęp do kontenera przez Run w normalny sposób.

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

Jeśli chcesz uzyskać obiektu utworzonego w ClassB pole statyczne należy wykonać zadanie

public class classB { 

    public static objectCReference; 

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

Następnie można uzyskać dostęp do odniesienia w

public classA { 
    int a = 0.5; 

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

} 

Także proszę postępować zgodnie z Konwencje językowe i rozpocznij nazwy klas dużymi literami.

Powiązane problemy