2017-09-24 32 views
0

我希望在訪問任何學生時能夠看到課程,並且我還希望在訪問課程時能夠獲得學生名單。我想引用另一個引用第一個對象的對象。這會導致什麼問題?

例子:

public class ClassRoom { 
public String nome; 
public List<Student> students; 
public ClassRoom(String nome){ 
    this.nome=nome; 
}} 

public class Student { 
public String nome; 
public ClassRoom aClass; 
public Student(String nome, ClassRoom aClass){ 
    this.nome = nome; 
    this.aClass = aClass; 
}} 

public School(){ 
    ClassRoom c1 = new ClassRoom("English 102"); 
    Student s1 = new Student("Anna White", c1); 
    Student s2 = new Student("Beatrix Blue", c1); 
    Student s3 = new Student("Carlos Brown", c1); 
    Student s4 = new Student("Dayana Green", c1); 
    Student s5 = new Student("Elliot Red", c1); 
    Student s6 = new Student("Jefferson Pink", c1); 

    c1.students = new ArrayList<>(); 
    c1.students.add(s1); 
    c1.students.add(s2); 
    c1.students.add(s3); 
    c1.students.add(s4); 
    c1.students.add(s5); 
    c1.students.add(s6); 

    //example 
    System.out.println(
      c1.students.get(1).aClass.students.get(2).aClass.students.get(3).nome 
    ); 

}} 

這是錯誤的這樣的計劃?有沒有更好的辦法?

回答

0

不同類別的交叉引用對象創建了循環依賴關係,應儘可能避免這種循環依賴關係。

有很多創建循環依賴的缺點,如長編譯時間,低模塊化,高耦合等

0

唯一真正的缺點是,你需要保持數據的SYNC-如果刪除學生1來自課堂A,您還需要從學生1中刪除課堂A或者您的數據不一致。

我實際上推薦使用第三個類來保持這個數據同步,所以單個調用是改變這兩個類的正確位置。如果你這樣做,將關係存儲在第二課堂中可能不是最好的,但是將其存儲在外部 - 例如,您可能決定最好爲在第三課堂中舉辦的學生製作Multimap教室,而不是直接持有數據

相關問題