所有类的对象其实都是Class的实例
获取是类对象的方式:
package Reflect; class Demo{ //other codes... } class hello{ public static void main(String[] args) { Class<?> demo1=null; Class<?> demo2=null; Class<?> demo3=null; try{ //一般尽量采用这种形式 demo1=Class.forName("Reflect.Demo"); //Class<?> cls = Class.forName(obj.getClass().getName); }catch(Exception e){ e.printStackTrace(); } demo2=new Demo().getClass(); demo3=Demo.class; System.out.println("类名称 "+demo1.getName()); System.out.println("类名称 "+demo2.getName()); System.out.println("类名称 "+demo3.getName()); } }
通过获取类的对象来整出所有关于这个类的信息的一个东西
//取得全部的构造函数
Constructor<?>
cons[]=demo.getConstructors();
per1=(Person)cons[
0
].newInstance();
//取得父类
Class<?> temp=demo.getSuperclass();
//
取得本类的全部属性
Field[] field = demo.getDeclaredFields();
for
(
int
i =
0
; i < field.length;
i++) {
// 权限修饰符
int
mo =
field[i].getModifiers();
String priv = Modifier.toString(mo);
// 属性类型
Class<?> type = field[i].getType();
System.out.println(priv +
"
"
+ type.getName() +
"
"
+ field[i].getName() +
";"
);
}
System.out.println(
"===============实现的接口或者父类的属性========================"
);
// 取得实现的接口或者父类的属性
Field[] filed1 = demo.getFields();
for
(
int
j =
0
; j <
filed1.length; j++) {
// 权限修饰符
int
mo =
filed1[j].getModifiers();
String priv = Modifier.toString(mo);
// 属性类型
Class<?> type = filed1[j].getType();
System.out.println(priv +
"
"
+ type.getName() +
"
"
+ filed1[j].getName() +
";"
);
}
原文:http://www.cnblogs.com/yujian-bcq/p/3549168.html