Hi Team,
我想创建一个具体的类对象集合,它们扩展了一个常见的Abstract类或接口。
c1
允许我存储扩展抽象类的具体实例。c2
允许我存储任何类的具体实例,而无法控制集合中的内容。 c3
我认为我想要的是它,但它实际上是AbstractTest
的集合,我不能将具体的类放入集合中。
Collection<AbstractTest> c1 = new HashSet<AbstractTest>();
c1.add(new TestImpl());
Collection<Class<?>> c2 = new HashSet<Class<?>>();
c2.add( TestImpl.class);
Collection<Class<AbstractTest>> c3 = new HashSet<Class<AbstractTest>>();
c3.add( TestImpl.class); <<< ERRORS!!!!
我怎样才能实现我的目标?
Collection<Class<? extends AbstractTest>> c3 =
new HashSet<Class< ? extends AbstractTest>>();
c3.add(TestImpl.class);
答案 0 :(得分:1)
Collection<Class<? extends AbstractTest>>
就是你想要的。
Collection<Class<? extends AbstractTest>> c3 = new HashSet<Class<? extends AbstractTest>>();
c3.add(TestImpl.class);
答案 1 :(得分:-1)
使用像ArrayList<? extends Number> list;
这样的扩展,您可以在其中放置Number及其任何子类。