java 动态判断List<T>(泛型类)的具体类型

package test;

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.List;


public class test {

    public static void main(String[] args) {

        Class<person> dtoClass = person.class;
        Field[]  fields = dtoClass.getDeclaredFields();
        for (Field field : fields ) {
            judgeFieldType(field);
        }
    }

    private static void judgeFieldType(Field field) {
        String name = field.getName();

        if (field.getGenericType() instanceof ParameterizedType) {
            ParameterizedType pt = (ParameterizedType) field.getGenericType();

           //判断具体类的类型

             if (pt.getRawType().equals(List.class)) {

           // 判断泛型类的类型
                if (pt.getActualTypeArguments()[0].equals(String.class)) {
                    System.out.println(name + " is List<String>;");
                } else if (pt.getActualTypeArguments()[0].equals(int.class)
                        || pt.getActualTypeArguments()[0].equals(Integer.class)) {
                    System.out.println(name + " is List<int>;");
                }
            }
        }else if (field.getGenericType().equals(String.class)) {
            System.out.println(name + " is String;");
        } else if (field.getGenericType().equals(int.class) || field.getGenericType().equals(Integer.class)) {
            System.out.println(name + " is int;");
        }
    }

}
package test;

import java.util.List;


public class person {

public String name;
public int age;
public List<String> cord;
public List<Integer> meter;

}

猜你喜欢

转载自fengyilin.iteye.com/blog/2341382