我有像
这样的工厂方法public static <T> Something<T> create(Class<T> clazz) {
return new Something<T>(clazz);
}
采用Class
参数。我在
Something<String> something1 = Something.create(String.class);
一切都很好。但是对于
Something<List> something2 = Something.create(List.class);
我得到一个警告,我无法摆脱。无论我尝试什么,我都会收到警告或错误。
除@SuppressWarnings("unchecked")
之外我还能做些什么吗?
实际上,我想得到
Something<List<?>> something2 = Something.create(List.class);
如果没有两个演员和一个警告,我无法得到。我正在使用eclipse 3.5.2。
答案 0 :(得分:0)
一种方法是为方法提供您想要用于泛型参数的类的虚拟实例。 E.g:
public static <T> List<T> asList(T a) {
return new ArrayList<T>();
}
答案 1 :(得分:0)
@SuppressWarnings("unchecked")
static public <A, B extends A> Class<B> rawcast(Class<A> clazz)
{
return (Class<B>)clazz;
}
void test()
{
Class<List<?>> clazz = rawcast(List.class);
Something<List<?>> something2 = Something.create(clazz);
}