我有一个班级
class ClassA<B extends ClassC>
{
................
}
在另一个班级,我有一个A类型的对象列表。
List<A<?>> cl = new ArrayList<A<?>>();
cl.add(new ClassB1(....));
其中ClassB1扩展了ClassC。如何找出列表中的对象类型?即列表中的第一个对象是ClassB1类型。
添加实际代码
ClassA<ClassB1> af = new ClassA<ClassB1>();
List<ClassA<?>> afl = new ArrayList<ClassA<?>>();
afl.add(af);
for(ClassA<?> a: afl)
System.out.println(a.getClass());
这只打印ClassA而不打印ClassB1。
答案 0 :(得分:3)
如果你真的,真的,你真的需要,你可以使用getClass()
上课。
但是,我建议你重新考虑一下首先需要上课的概念。 如果您打算以不同的方式对待这些类,那么它可能不像您想象的那样通用。考虑重构更合适的方法。
答案 1 :(得分:2)
如果您放置不同类的对象,则可以迭代列表并使用getClass()
。
更新:由于类型擦除,此信息在运行时丢失。所以你无法得到它。