【问题标题】:How to pass class type as an parameter to function?如何将类类型作为参数传递给函数?
【发布时间】:2020-04-28 22:13:34
【问题描述】:

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

【问题讨论】:

标签: java class oop polymorphism


【解决方案1】:
    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&lt;? extends A&gt; 用于仅允许 A 类型的类型或列表中允许的元素类型的子类。

【讨论】:

    【解决方案2】:

    你可以这样做:

    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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 2018-10-30
      • 2019-09-29
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多