加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

Java反射分析

发布时间:2021-11-24 16:39:31 所属栏目:教程 来源:互联网
导读:Java.lang.reflect包 Constructor、Field、Method的父类是AccessibleObject; 一、获得Class对象 Class? c = Class.forName(classname); 抛出ClassNotFoundException 二、获得实现接口 Class? inters[] = c.getInterfaces(); for(int i=0;iinters.length;i++

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();
 
 
 
八、Constructor创建对象
 
Class c = Class.forName("Person");
Constructor<?> cons[] = c.getConstructors();
Person p = (Person)cons[0].newInstance("xiazdong",15);

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读