您的位置:首页 > 编程语言 > Java开发

java反射,获得Class是否为基本数据类型,是否其他类的父类。获得泛型。

2015-08-12 15:43 579 查看
原文:http://blog.csdn.net/is_zhoufeng/article/details/7629931

Class c = ArrayList.class;

c.isPrimitive(); //判断c是否为基本数据类型

c.isAssignableFrom(List.class);  //判断c是否是List类的子类或父类

c.getGenericType(); //得到泛型类型

实例:通过反射得到List<T> 集合中的泛型类型

[java] view
plaincopy

package com.zf.target;  

  

import java.lang.reflect.Field;  

import java.lang.reflect.ParameterizedType;  

import java.lang.reflect.Type;  

import java.util.List;  

import java.util.Map;  

  

class T{  

    List<A>  a;  

    List<B>  b;  

//  List l ;  

    Map<Integer, String> map ;  

    int c;  

}  

  

class A {}  

class B{}  

  

public class Test9{  

  

    public static void main(String[] args) {  

        Class tc = T.class;  

        Field[] fields = tc.getDeclaredFields();  

        for (Field f : fields) {  

            Class fc = f.getType();  

            if(fc.isPrimitive()){  

                System.out.println("基本数据类型: " + f.getName() + "  " + fc.getName());  

            }else{  

                if(fc.isAssignableFrom(List.class)){ //判断是否为List  

                    System.out.println("List类型:" + f.getName());  

                    Type gt = f.getGenericType();   //得到泛型类型  

                    ParameterizedType pt = (ParameterizedType)gt;  

                    Class lll = (Class)pt.getActualTypeArguments()[0];  

                    System.out.println("\t\t" + lll.getName());  

                }  

            }  

        }  

    }  

      

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: