如何将类类型作为参数传递给函数?

时间:2020-04-28 22:13:34

标签: java class oop polymorphism

我有四个班级:A,B,C,D。 B,C,D延伸了A。 我有一个列表-List<A>,其中包含各种对象,并且我想构建一个函数,该函数将其中一个类作为参数,并从列表中打印属于该类的所有对象。

2 个答案:

答案 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());
相关问题