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());
}
}
}
}
}
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());
}
}
}
}
}
相关文章推荐
- java中数组用法
- spring aop(一)
- Eclipse导入外部项目问题总结
- javafx tabPane
- 【leetcode】Valid Anagram 【java】
- 好用的eclipse properties插件
- 【JDK配置原创】JDK(JRE)环境变量配置原理 --费元星
- 【Java】Java代码经典错误清单
- JAVA 垃圾回收机制
- Dealing with “java.lang.OutOfMemoryError: PermGen space” error
- spring4入门
- Spring Hessian整合 404 问题
- eclipse 启动后一直在Loading descriptor
- java生成二维码、条形码和二维码、条形码的解码
- 【Java】打印所有的水仙花数
- Java 注解
- java 泛型
- Java 枚举:理解枚举本质
- Java线程池使用说明
- java两种方法实现excel导出