我有两个类型 ArrayList<ObjectType1>
的 ArrayList和ArrayList<ObjectType2>
.
然后我创建了另一个 ArrayList<Object>
因为对象是每个对象类型的父类(super class)。
ArrayList<Object1> obj1 = new ArrayList<Object1>();
ArrayList<Object2> obj2 = new ArrayList<Object2>();
这两个对象类都有自己特定的 getter 和 setter 方法。
ArrayList<Object> obj3 = new ArrayList<Object>();
obj3.add(obj1);
obj3.add(obj2);
现在,当我访问 obj3 时,我想获取 obj1 和 obj2 的 getter 和 setter。??
任何人都可以帮忙解决吗..???
最佳答案
你可以做这些事情:
ArrayList<MyClass1> obj1 = new ArrayList<MyClass1>();
ArrayList<MyClass2> obj2 = new ArrayList<MyClass2>();
ArrayList<Object> obj3 = new ArrayList<Object>();
obj3.add(obj1);
obj3.add(obj2);
for (int = 0 ; i < obj3.size() ; i++) {
Object obj = obj3.get(i);
if (obj instanceof MyClass1) {
MyClass1 cls1 = (MyClass1)obj;
cls1.get()..//You getters and setters
}
if (obj instanceof MyClass2) {
MyClass2 cls2 = (MyClass2)obj;
cls2.get()..//You getters and setters
}
}
或者你可以做一些更聪明的事情并创建一个接口(interface)或抽象类/基类
public Interface Getable {
void getAttrbiute();
}
不仅仅是在 MyClass1、MyClass2 中实现。 在这种情况下,您可以运行列表而不进行强制转换和 instaceof 检查
ArrayList<MyClass1> obj1 = new ArrayList<MyClass1>();
ArrayList<MyClass2> obj2 = new ArrayList<MyClass2>();
ArrayList<Getable> obj3 = new ArrayList<Getable>();
obj3.add(obj1);
obj3.add(obj2);
for (int = 0 ; i < obj3.size() ; i++) {
Getable objGetable = obj3.get(i);
objGetable.getAttrbiute();
}
希望有帮助..
关于java - 如何检索 ArrayList<Object> 中包含两个不同对象类型 arraylist 的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23888289/