美好的一天,我有一點設計問題,通過我真的不能讓我的頭,我希望我能解釋清楚所有的理解。我有一個ClassA的是包含一個ClassB的的ArrayList所以ClassA的是單:Java.lang.IndexOutOfBoundException在類的ArrayList對象
private classA(){
//private constructor
}
public static synchronized classA getClassA(){
if(ClassA == null){
ClassA = new ClassA();
}
return ClassA;
}
private ArrayList<ClassB> classb = new ArrayList<ClassB>(5);
public ArrayList<ClassB> getClassB(){
return this.classb;
}
public ClassB getLastClassB() {
return this.classb.get(this.classb.size() - 1);
}
在ClassB的,我有D類的ArrayList,其中D類就是一個類的getter和setter的,所以我的ClassB的是:
public ClassB() {
}
private ArrayList<ClassD> classd = new ArrayList<ClassD>();
public ArrayList<ClassD> getClassD(){
return this.ClassD;
}
public ClassD getLastClassD() {
return this.ClassD.get(this.ClassD.size() - 1);
}
這樣,當我想要的清單中ClassA的對象與CLASSB和D類對象,我做
ClassA A = ClassA.getClassA();
Class B B = new ClassB();
ClassD D = new ClassD();
//do some setters here for D
B.getClassD.add(D)
// do some things in B
A.getClassB.add(B)
但是當我嘗試訪問此另一個類,我得到一個java .lang .IndexOutOfBoundsException:指數:0,大小:0我的猜測是從ClassB的持有D類的ArrayList的,因爲其他功能正在..
for(int i = 0; i < classA.getClassB.size(); i++)
if(classA.getClassB().get(i).getClassD().size() > 0){ //java.lang.indexOutOfBoundsException
任何想法可能是錯誤的或者是從我的設計實現方式? ..我不能讓ClassB的另一辛格爾頓,因爲那樣我會在ArrayList中ClassA的相同ClassB的對象。任何更好的實現的想法?..非常感謝提前。
ArrayList或ArrayList 中沒有任何項目請檢查 –
Luc
new ArrayList(5);創建初始容量爲5的空列表,不包含5個項目 –
Hurda