Java 的反射
1、什么叫反射:根据的类的声明来得到这个类的所有属性,方法,构造子,通过构造子来实例化一个新的对象,并可以用invoke()方法来修改属性值,设置属性值。
2、得类说明的三种方法:
a)、Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
b)、类名.class
c)、实例名.getClass();
3、通过类的声明得到类的名称、父类、实现的所有接口
Class class=Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//Class.forName 的作用:返回与带有给定字符串名的类或接口相关联的 Class
对象。
//表明不仅可以到到类,同样可以得到接口
class.getName();//得到类名
class.getSuperClass().getName()//得到父类的类名
class.getInterfaces();//得到接口的名称,并返回一个数组,因为类可以实现多个接口
4、得到构造子(Consturctor)
Constructor cons=new Consturctor(new Class[]{String.class,String.class,int.class});
//前提条件是类中要有和参数内相同类型及个参数的构造函数,否则会报错
Object object=cons.newInstance(new Object[]{"UserName","male",22});
//构造了一个以给定值初始化的一个对象
如果是默认的构造函数则
class.newInstance();
//按默认的方式初始化一个类的实例
5、方法
Method method=cons.getMethod("methodName",new Class[]{String.class,String.class});
//得到类中方法名所对应的参数类型、个数与声明相同的方法,如果没有则会报错
method.invoke(实例,new Object[]{"a","b"});
6、属性
Field fieldName=class.getField("customerName");
fieldName.get(对象名);
fieldName.set(对象名,value);