【发布时间】:2012-05-25 15:00:04
【问题描述】:
是否可以获取Class<SomeGenericClass<SomeType>>的实例?
例如,Class<ArrayList<String>> 的实例没有实例化 ArrayList<String> 的实例。
@SuppressWarnings("unchecked")
public static <T> T castToGeneric(Object objectToCast, T typeInferrenceClass) {
return (T)objectToCast;
}
// usage
Object someObject = null /* initialised elsewhere */;
List<String> listOfStrings = castToGeneric(someObject, new ArrayList<String>());
// I want to avoid having to create - new ArrayList<String>();
我知道这段代码很难看,我不应该这样做。但我们就在我们所在的地方......
【问题讨论】:
-
明确一点,你得到的是
Class的一个实例,剩下的只是编译器的注解。 -
@MarkoTopolnik 是的 - 我想要一个类的实例
-
@gasan 你试过编译你输入的内容吗?
-
List 是一个接口,而不是一个类。例如,您只能从 ArrayList 中获取 Class。
-
@RobertKovačević 错误。 Java 中的每种类型都有其
Class实例,甚至是int.class。