2013-04-15 48 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类的对象,我们必须访问图书的所有方法以及会员类。现在问题是在Book中创建的成员类的对象没有初始化&我们不能使用新的操作符来初始化它&我们不能使它成为静态的。如果我们使用新操作员,结果不会来。

+2

_we不能使用新运算符来初始化_为什么你不能?任何理由呢? –

+0

如果您不想为成员使用新的运算符,只需在创建Book时传递并指派其实例。 –

+0

你可以像DI DI一样去DI吗? – NINCOMPOOP

回答

0

这种设计不正确。

有一个循环依赖。

BookMemberMemberBook

您需要仔细检查此设计。

构造函数注入是解决这个问题的最简单方法。

更新:我觉得更正的设计是正确的。

//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

但是在Book类中,我能否以相同的方式创建对象?实际上在我的项目中有三名演员CLERK,CUSTOMER,VENDOR。为此我需要从两边访问这些类。 –

+0

'Book'类不会对'Member'有任何依赖。同样的'Book'实例可以传递给'Clerk','Customer'和'Vendor'。 –