Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Java反射研究

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