Consider a generic method definition like this:
public static <T> T getParameter(final Context context, final ContextParameter contextParameter, final Class<T> clazz) {
return (T) context.get(contextParameter.name());
}
这个方法可以很好地获取任何类型的对象,但是对于像List<String>这样的泛型对象,就会出现问题。我发现唯一能让它正常工作的方法是这样的:
final List<String> fileNames =
(List<String>) ContextUtils.getParameter(context,
ContextParameter.EOF_FILE_NAMES_TO_ZIP, List.class);
但是这需要额外的强制类型转换,这就使得原本的方法失去了它的作用。有没有一种方式可以将
List<String>.class
或类似的内容提供给该方法?(我知道类型擦除会阻止List<String>
的存在,但也许有一种方法可以解决)。注意:所谓“使其工作”,指的是在不产生类型安全警告的情况下运行代码。我知道这个代码可以按照现在的形式运行,但它不是类型安全的。
List<String> parameter1 = getParameter(List.class);
- Jatin