使用Class <! - ? - >变量创建通用对象

时间:2011-07-01 11:58:03

标签: java

我有一个泛型类A,我在一个方法,我必须根据给定对象的类创建一个A的实例。也就是说,我有:

public void (Object obj) {
  Class<?> c = obj.getClass();
  A<c> = ...;
}

然而,在第三行Eclipse上说c无法解析为某种类型。当我删除泛型参数时,我得到“A是原始类型。应该参数化对泛型类型A的引用。”

到这里的正确方法是什么?

感谢。

2 个答案:

答案 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'>是正确的方法。