2013-04-15 3 views
0

Мне здесь не нужна помощь. У меня есть три класса: Book, Member, Bean.Способы доступа класса из созданного объекта другого класса

Book.java

public class Book 
{ 
    public Member m=null; 
    // various getter & setter methods 
} 

Member.java

public class Member 
{ 
    public Book b=null; 
    // various getter & setter methods 
} 

В Bean.java создать объект класса Book & через этот объект, мы должны получить доступ ко всем методам книги, а также члены класса . Теперь проблема в том, что объект класса Member, созданный в книге, не инициализирован &, мы не можем использовать новый оператор для его инициализации &, мы не можем сделать его статическим. Если мы используем новый оператор, результат не наступает.

+2

_we не может использовать новый оператор для инициализации_, почему вы не можете? любая причина для этого? –

+0

Если вы не хотите использовать новый оператор для члена, просто передайте и назначьте его экземпляр при создании книги. –

+0

Можете ли вы пойти на DI, как Spring DI? – NINCOMPOOP

ответ

0

Эта конструкция является неправильной.

Существует круговая зависимость.

Book имеет Member и Member имеет Book.

Вам необходимо дважды проверить этот дизайн.

Встраивание конструктора было бы самым простым способом исправить это, как только у вас будут отсортированы зависимости.

ОБНОВЛЕНИЕ: Исправленный дизайн, который я считаю правильным.

//Book 
public class Book { 
    private String bookName; 
    private String authorName; 
    //getters and setters 
} 

//Member will have a book (maybe multiple) associated with them 
public class Member { 
    private Book[] bookArray; 
    public Member (Book... books) { 
     this.bookArray = books; 
    } 
} 
+0

Как? Пожалуйста, скажите мне решение. что такое инъекция конструктора? –

+0

Но в классе книги я могу создать объект таким же образом? На самом деле в моем проекте есть три участника CLERK, CUSTOMER, VENDOR. для этого мне нужно получить доступ к этим классам с обеих сторон. –

+0

Класс 'Book' не будет зависеть от' Member'. Тот же экземпляр «Книга» может быть передан «Clerk», «Customer» и «Vendor». –

Смежные вопросы