java—在创建类型集合时,如果每个类型必须属于同一父类,如何强制执行类型安全性?

6jygbczu  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(277)

问题摘要
我想存储一个对象类型列表,但规定所有类型都是特定父类的子类。例如如下所示:

public abstract class ParentClass {
    ...

}

public class ChildClass1 extends ParentClass {
    ...

}

public class ChildClass2 extends ParentClass {
    ...

}

public class SomeOtherClass {
    List<Type> listOfChildClassTypes = new ArrayList<>();

    public void someMethod() {
        listOfChildClassTypes.add(ChildClass1.class);
        listOfChildClassTypes.add(ChildClass2.class);
    }
}

问题是,我想定义listofchildclasstypes列表,以便只有parentclass的子类型可以添加到它-任何尝试添加不是parentclass子类的类型都会导致编译器错误。通过使用泛型“type”类,上面的代码允许在列表中存储任何需要运行时验证才能检查的类型。这是我想避免的。
谢谢你的帮助。

xvw2m8pv

xvw2m8pv1#

你应该读什么 PECS 以及“有界类型”是什么,因为这正是您需要的:

List<Class<? extends ParentClass>> listOfChildClassTypes = new ArrayList<>();

相关问题