我有一个泛型类A,我在一个方法,我必须根据给定对象的类创建一个A的实例。也就是说,我有:
public void (Object obj) {
Class<?> c = obj.getClass();
A<c> = ...;
}
然而,在第三行Eclipse上说c无法解析为某种类型。当我删除泛型参数时,我得到“A是原始类型。应该参数化对泛型类型A的引用。”
到这里的正确方法是什么?
感谢。
答案 0 :(得分:2)
public <C> void (Object B) {
Class<C> c = B.getClass();
A<C> a = ...;
}
甚至更好
public <C> void (C B) {
Class<C> c = B.getClass();
A<C> a = ...;
}
或者如果你只需要Class
public <C> void (Class<C> clazz) {
A<C> a = ...;
}
答案 1 :(得分:1)
c
是一个对象。而且你只能在定义泛型变量时给出Class。
所以A<'ClassName'>
是正确的方法。