public static <T> List<T> foo(Class<T> clazz, /* 其他参数*/) throws IllegalAccessException, InstantiationException {
List<T> result = new ArrayList<>();
T item = clazz.newInstance();
// 业务代码
result.add(item);
return result;
}
这是一个经典的例子,使用范型+Class参数,尽量避免了类型强势转换,but,总有一些API会用List<Object>
的形式返回,比较好的类型强转如下:
List objList = getPersonList();
List<Person> personList = null;
objList = Collections.singletonList(personList);
if (!objList.isEmpty() && objList.get(0) instanceof Person) {
personList = (List<Person>) objList;
}