我有四个班级:A,B,C,D。
B,C,D延伸了A。
我有一个列表-List<A>
,其中包含各种对象,并且我想构建一个函数,该函数将其中一个类作为参数,并从列表中打印属于该类的所有对象。
答案 0 :(得分:2)
public static void printElements(List<A> list, Class<? extends A> type) {
for (A element : list) {
if (type.isAssignableFrom(element.getClass())) {
System.out.println(element);
}
}
}
方法isAssignableFrom
可用于确定作为参数接收的Class是列表的每个元素的同一类还是超类。
Class<? extends A>
仅用于允许类型A的类型或作为列表中允许的元素类型的子类。
答案 1 :(得分:1)
您可以执行以下操作:
List<A> list = (...);
public static void print(Class klass) {
for(A a : list) {
if(klass.isInstance(a)) {
System.out.println(a);
}
}
}
要使用它:
print(C.class);
或
C c = new C();
print(c.getClass());