考虑下一个方法
<T, A extends BaseClass1, U extends BaseClass2<T, A>>
void map(Class<T> classType, Class<U> myClass2Instance)
然后我得到了这个课程
class Child extends BaseClass2<ArrayList<MyData>, BaseClass1>
现在我正在尝试进行映射:
map(ArrayList<MyData>.class, Child.class)
诅咒它没有编译因为你不能拥有泛型类类型,所以我把它改成下一个语句:
Class<ArrayList<MyData>> classData = (Class<ArrayList<MyData>>) new ArrayList<MyData>().getClass();
map(classData, Child.class)
这引起了警告,但它确实有效。
有没有办法让它在没有新的类实例的情况下工作?我只是不喜欢这里的新关键字...
答案 0 :(得分:0)
据我所知,如果没有未经检查的警告,您将无法获得Class<ArrayList<MyData>>
类型的变量。
@SuppressWarnings({"unchecked", "rawtypes"})
Class<ArrayList<MyData>> classData = (Class<ArrayList<MyData>>) (Class) ArrayList.class;
请注意,由于类型删除,Class<ArrayList<MyData>>
等于Class<ArrayList<AnyOtherData>>
,因此无法在map
函数中区分它们。