java反射机制
- 两个关键类
- Class类
- Method类
Class类
- Java运行时始终为所有对象维护一个运行时的类型标识,保存这些信息的类就是Class类。
- 获取class类有三种方式
1)对象.getClass()
Integer i;
Class c=i.getClass();
2)通过Class静态方法Class.forName(String name)获得,类型名需要包括包名。
String className="java.lang.Integer";
Class c=Class.forName(className);
3)类型.class获得
Class c1=Date.class;
Class c2=int.class;
Class c3=Double[].class;
3.通过Class类产生实例对象
String s="java.util.Date";
Object date=Class.forName(s).newInstance();
注:此处产生实例是调用s类的默认构造函数,如无默认构造函数,则会产生异常。
若果希望向产生的实例中传递参数,需要使用Constructor类中的newInstance()
方法
4.分析类
getFields、getMethods、getConstructors方法
返回类提供的public域、方法和构造器数组,包括超类的公有成员。getDeclareFields、getDeclareMethods、getDeclareConstructors方法
返回类中声明的全部域、方法和构造器、其中包括私有成员和受保护成员,但不包括超类的成员。