如何解决在创建类型集合时如何强制类型安全,其中每个类型必须属于同一个父类?
问题总结
我想存储一个对象类型列表,但规定所有类型都是特定父类的子类。例如类似以下内容:
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”类,上面的代码允许将任何类型存储在需要运行时验证来检查的列表中。这是我想避免的。
感谢您的帮助。
解决方法
您应该阅读什么是 PECS
以及什么是“有界类型”,因为这正是您在这里所需要的:
List<Class<? extends ParentClass>> listOfChildClassTypes = new ArrayList<>();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。