java 反射獲取字段為List類型中的泛型類型


在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);
                    }
            }
        }    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM