2015-01-22 9 views
-2

Мне нужен ClassB, чтобы получить объект, созданный с ClassA, что составляет u. Как мне это сделать? ClassA устанавливает значение с помощью setSomething() из Utility класса, в то время как ClassB должны получить значение, установленное с помощью ClassAgetSomething() одного и того же объекта (u)Объект вызова, созданный другим классом

public class ClassA 
{ 
    Utility u = new Utility() 
    u.setSomething("David"); 
} 

public class ClassB 
{ 
    //How do I get the 'u' Utility object from ClassA 
} 

public class Utility 
{ 
private String fullName; 

    public void setSomething(String name) 
    { 
     this.fullName = name 
    } 

    public String getSomething() 
    { 
     return fullName; 
    } 

} 
+2

Это недопустимый код, вы не можете иметь инструкции вне методов. – Maroun

+0

Во-первых, объекты не имеют имен. – immibis

+1

Вам нужно сделать шаг назад и узнать о переменных, конструкторах и методах, которых я боюсь. Я все равно отправлю ответ. –

ответ

1

прямолинейного подхода без узоров и простых классов.

public class ClassA { 
    private Utility u = new Utility() 

    public ClassA() { 
     u.setSomething("David"); 
    } 

    public Utility getU() { 
     return u; 
    } 
} 

public class ClassB { 
    private ClassA classA = new ClassA(); 

    public ClassB() { 
     System.out.println(classA.getU().getSomething()); 
    } 

} 

public class Utility { 
    private String fullName; 

    public void setSomething(String name) { 
     this.fullName = name; 
    } 

    public String getSomething() { 
     return fullName; 
    } 
} 

public static void main(String[] args) { 
    ClassB b = new ClassB(); 
} 

Должен распечатать «Давид»;

+0

Извините, что я забыл включить в ClassA и ClassB основной метод. Действие находится в конструкторе, поэтому как я могу вызвать конструктор из основного метода? –

+0

Обычно вы можете вызвать каждый конструктор любым способом, как: 'ClassA objectA = new ClassA();' - если конструктор определен (java добавляет стандартный конструктор, если конструктор не определен). –

1

Обратите внимание, что нет ОДНОГО способа сделать что-то. Может быть один способ сделать что-то ЛУЧШЕ. Все это зависит от вашего дизайна и потребностей, это только пример:

public class ClassA{ 
    Utility u = new Utility() 
    public Utility getU(){ 
     return u; 
    } 
    public void buildB(){ 
     ClassB classB = new ClassB(this); 
    } 
} 

public class ClassB{ 
    ClassA classA; 
    Utility u; 
    public ClassB(ClassA classA){ 
     this.classA = classA; 
     u = classA.getU(); 
    } 
} 
Смежные вопросы