1.反射
反射主要解决动态编程,即使用反射时,所有的对象生成是动态的,因此调用的方法也是动态的.反射可以简化开发,但是代码的可读性很低.
很多主流框架都使用了反射技术.像ssh框架都采用两种技术 xml做配置文件+反射技术.2 与反射有关的类包
java.lang.reflect.*;和java.lang.Class;3 反射的操作
Java中所有类型(包括基本类型)都对应一个Class对象,这个Class就是java.lang.Class。即每一个类型,在Class中都有一个Class对象跟它对应.Class 没有公共构造方法。注意不是没有,是没有公共的.4如何获得class对象
- 针对每一个对象.getCalss(),可以得到对应的Class.
- Class.forName(String),String的写法:包名.类名.就会创建包名.类名 、 对应的那个对象
- 对于基本类型:封装类.TYPE代表了对应的基本类型的Class对 象.Integer.TYPE对应的是int的Class对象
- 类型,Class。<第4种是通用的.>
注:1.2只适用于引用类型
注:3只适用于基本类型,4是通用的
上面的4种方法,只有方法2是动态的,只要换一个包就可以了.它具有动态潜质.所以真正意义的想体现动态编程只能使用方法2.
每种类型的Class对象只有一个,即他们的地址只有一个,但是不同类型是不同的.
所以下面的打印结果都为true.
//对与引用类型
Class c1 = “”.getClass();
Class c2 = Class.forName(“java.lang.String”);
Class c3 = String.class;
System.out.println(c1 ==c2);//true
//对于基本类型
Class num1 = Integer.TYPE;
Class num2 = int.class;
System.out.println(num1 == num2);//true
5.反射获取类中的成员