基本上,我有一个类“A”,其他类(例如“B”、“C”和“D”)扩展了它。这些类型的对象将具有不一定是唯一的字符串名称。
public class A {
//some code
}
public class B extends A {
// some code
}
因此类 C 和 D 也扩展了 A,与 B 相同。
接下来我有一个持有者类,它有一个数组列表来保存 B、C 和 D 对象(这里不会包含 A 对象)。
public class Holder {
List<A> container;
public Holder() {
container = new ArrayList<A>();
}
public A getItemByName(String s) {
//return the first object with s == name, or return null
}
public A getItemByType(Class c) {
//return the first object that matches the class or return null
}
}
这些函数可以成功挑选出所需的对象,但我需要以 B、C 和 D 类型返回对象。有没有办法做到这一点,如果有的话,怎么做?
最佳答案
你可以做到
public <T extends A> T getItemByType(Class<T> c) {
for(Object o : container){
if(c.isInstance(o)){
return c.cast(o);
}
}
return null;
}
然后你就可以做到
B found = holder.getItemByType(B.class);
关于java - 从 ArrayList 返回多种对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27829737/