Class lstUClazz = List<User>.class
List<User> listUser = new ArrayList<User>();
Type genType = listUser.getClass().getClass().getGenericSuperclass();
Class templatClazz = null;
if(ParameterizedType.class.isInstance(genType)
{
//无法获取到User类,或者可能获取到错误的类型,如果有同名且不带包名的泛型存在
ParameterizedType parameterizedType = (ParameterizedType) genType;
templatClazz = (Class) parameterizedType.getActualTypeArguments()[0];
}
public abstract class JdbcDaoSupport<T> {
protected JdbcDaoSupport() {
}
public Class getTempalteType()
{
Class<T> clazz = (Class<T>) ((ParameterizedType) getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
return clazz;
}
}
public class UserDao extends JdbcDaoSupport<User> {
}
public class Test{
public static void main(String[] args)
{
UserDao dao = new UserDao();
Class clazz = dao.getTemplateType();
System.out.println(clazz.getName()); //输出 xxx.xxx.User
}
}
public class Test extends ClassA<String> {
private List<String> list;
private Map<String, Object> map;
/***
* 获取List中的泛型
*/
public static void testList() throws NoSuchFieldException, SecurityException {
Type t = Test.class.getDeclaredField("list").getGenericType();
if (ParameterizedType.class.isAssignableFrom(t.getClass())) {
for (Type t1 : ((ParameterizedType) t).getActualTypeArguments()) {
System.out.print(t1 + ",");
}
System.out.println();
}
}
/***
* 获取Map中的泛型
*/
public static void testMap() throws NoSuchFieldException, SecurityException {
Type t = Test.class.getDeclaredField("map").getGenericType();
if (ParameterizedType.class.isAssignableFrom(t.getClass())) {
for (Type t1 : ((ParameterizedType) t).getActualTypeArguments()) {
System.out.print(t1 + ",");
}
System.out.println();
}
}
public static void main(String args[]) throws Exception {
System.out.println(">>>>>>>>>>>testList>>>>>>>>>>>");
testList();
System.out.println("<<<<<<<<<<<testList<<<<<<<<<<<\n");
System.out.println(">>>>>>>>>>>testMap>>>>>>>>>>>");
testMap();
System.out.println("<<<<<<<<<<<testMap<<<<<<<<<<<\n");
System.out.println(">>>>>>>>>>>testClassA>>>>>>>>>>>");
new Test().testClassA();
System.out.println("<<<<<<<<<<<testClassA<<<<<<<<<<<");
}
}
List<User> lst = new ArrayList<User>(){};
Type genType = listUser.getClass().getClass().getGenericSuperclass();
Class templatClazz = null;
if(ParameterizedType.class.isInstance(genType)
{
ParameterizedType parameterizedType = (ParameterizedType) genType;
templatClazz = (Class) parameterizedType.getActualTypeArguments()[0];
}
Class clz = new ArrayList<User>(){}.getClass();
class JsonToObjectUtil {
public static <T> T jsonToObject(Class<T> clz,List<String> jsonList){
Type genType = clz.getClass().getGenericSuperclass();
Class templatClazz = null;
if(ParameterizedType.class.isInstance(genType));
{
ParameterizedType parameterizedType = (ParameterizedType) genType;
templatClazz = (Class) parameterizedType.getActualTypeArguments()[0];
}
List<Object> lst = new ArrayList<Object>();
/*****/
if(templatClazz!=null && jsonList!=null)
{
for (String str : jsonList) {
Gson gson = new Gson();
Object fromJson = gson.fromJson(str, templatClazz);
lst.add(fromJson);
}
}
/*****/
return (T) lst;
}
public static void main(String[] args) {
List<String> jsonList = null;
//略去一部分填充jsonList的逻辑
Class superClazz = new ArrayList<User>(){}.getClass();
List jsonToObject = JsonToObjectUtil.jsonToObject(superClazz, jsonList);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有