在java編程時,經常會使用反射去處理對象,有時會需要知道List的泛型類型:示例操作如下
obj = pojo.newInstance(); // 首先得到pojo所定義的字段 Field[] fields = pojo.getDeclaredFields(); for (Field curField : fields) { // 設置字段可訪問(必須,否則報錯) curField.setAccessible(true); Class<?> curFieldType = curField.getType(); // 集合List元素 if (curFieldType.equals(List.class)) { // 當前集合的泛型類型 Type genericType = curField.getGenericType(); if (null == genericType) { continue; } if (genericType instanceof ParameterizedType) { ParameterizedType pt = (ParameterizedType) genericType; // 得到泛型里的class類型對象 Class<?> actualTypeArgument = (Class<?>)pt.getActualTypeArguments()[0]; List<Object> curEleList = new ArrayList<>(); Object actualType = actualTypeArgument.newInstance(); //....actualType字段處理 curEleList.add(actualType); curField.set(obj, curEleList); } } }