Java反射研究(1)
来源:互联网 发布:人工智能 科技创新 编辑:程序博客网 时间:2024/06/14 06:29
java.lang.reflect包
Constructor、Field、Method的父类是AccessibleObject;
说明:反射主要用于开发框架,即制作框架;
一、获得Class对象
Class<?> c = Class.forName("classname"); 抛出ClassNotFoundException
二、获得实现接口
Class<?> inters[] = c.getInterfaces();
for(int i=0;i<inters.length;i++){
System.out.print(inters[i].getName()+" "); //getName()方法为取得接口名称;
}
三、获得父类
Class<?> superClass = c.getSuperclass(); //获得父类
String name = superClass.getName(); //获得父类名称
四、取得构造方法
Constructor cons[] = c.getConstructors(); //获得公开的构造方法
Constructor dcons[] = c.getDeclaredConstructors(); //获得全部构造方法
String modifier = Modifier.toString(cons[i].getModifiers()); //获得访问权限
String name = cons[i].getName(); //获得构造方法名称
Class<?> params[] = cons[i].getParameterTypes(); //获得参数类型对象
五、获得Method
Method ms[] = c.getMethods(); //返回公共的全部方法,包括继承方法
Method dms[] = c.getDeclaredMethods(); //返回本类全部方法,不包括继承的方法
Class<?> rt = ms[i].getReturnType();
Class<?>params[] = ms[i].getParameterTypes();
String name = ms[i].getName();
String modifier = Modifier.toString(ms[i].getModifiers());
Class<?>ex[] = ms[i].getExceptionTypes(); //获得异常
String name = ex[i].getName(); //获得异常名称
六、获得Field
Field fs[] = c.getFields(); //获得公共属性,包括继承属性
Field dfs[] = c.getDeclaredFields(); // 获得本类全部属性
Class<?> type = fs[i].getType(); //获得属性的类型对象
String name = fs[i].getName(); //获得属性的名称
String modifier = Modifier.toString(fs[i].getModifiers());
七、通过反射创建一个对象
Class<?> c = Class.forName("Person");
Person p = (Person)c.newInstance();
(2)
Constructor con = c1.getConstructor(Class....param);
Object obj = con.newInstance(Object obj); //根据构造函数创建一个实例
八、Constructor创建对象
Class c = Class.forName("Person");
Constructor<?> cons[] = c.getConstructors();
Person p = (Person)cons[0].newInstance("xiazdong",15);
注:如果调用的构造函数为私有,则需要c.setAccessible(true);
- Java反射研究(1)
- Java反射研究(2)
- Java反射研究(3)
- Java反射研究(3)
- Java反射研究
- Java反射机制研究
- Java反射探索研究
- Java反射探索研究
- Java反射探索研究
- Java反射探索研究
- Java Reflection (JAVA反射) 研究
- Java 反射机制深入研究
- Java反射机制深入研究
- Java反射机制深入研究
- Java 反射机制深入研究
- Java 反射机制深入研究
- Java反射机制深入研究
- Java反射机制深入研究
- Spring 3.1包详解
- makefile书写规则
- 不用比较运算符及循环控制语句,判断int型的a、b两数的大小
- 实现ListView控件的多选和全选功能
- ALV checkbox实例
- Java反射研究(1)
- js 小代码收藏
- 数组排序数字大小,与筛选最大值最小值。冒泡比较法。。研究了好久才写出来与大家分享
- nfc理解
- cookie 和session 的区别详解
- JTabbedPane标签位置安排
- 把输入数字内容转换为金钱数输出
- HDFS集群的启动(4)——NameNode任务线程之LeaseManager$Monitor
- IE中实现HTMLElement