美好的一天,我有一点设计问题,通过我真的不能让我的头,我希望我能解释清楚所有的理解。我有一个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