`
holoblog
  • 浏览: 1228231 次
博客专栏
E0fcf0b7-6756-3051-9a54-90b4324c9940
SQL Server 20...
浏览量:18936
文章分类
社区版块
存档分类
最新评论

Java反射研究(1)

 
阅读更多

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


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics