**
java反射
**
 1.获取反射
 根据一个字符串得到一个类
 String name = “Huanglinqing”;
 Class c1 = name.getClass();
 System.out.println(c1.getName());
 根据类名:Class.forName
 String name = “java.lang.String”;
 Class c1 = null;
 try {
 c1 = Class.forName(name);
 System.out.println(c1.getName());
 } catch (ClassNotFoundException e) {
 }
 Type属性: 基本类型都有type属性,可以得到这个基本类型的类型
 Class c1 = Boolean.TYPE;
 Class c2 = Byte.TYPE;
 Class c3 = Float.TYPE;
 Class c4 = Double.TYPE;
 反射的使用:
 当类中方法定义为私有的时候我们能调用?不能!当变量是私有的时候我们能获取吗?不能!但是反射可以,比如源码中有你需要用到的方法,但是那个方法是私有的,这个时候你就可以通过反射去执行这个私有方法,并且获取私有变量。
 获取类的所有构造方法:
 Test test = new Test();
 Class c4 = test.getClass();
 Constructor[] constructors ;
 constructors = c4.getDeclaredConstructors();
通过getDeclaredConstructors可以返回类的所有构造方法,返回的是一个数组因为构造方法可能不止一个,通过getModifiers可以得到构造方法的类型,getParameterTypes可以得到构造方法的所有参数,返回的是一个Class数组,所以我们如果想获取所有构造方法以及每个构造方法的参数类型,可以有如下代码:
 for (int i = 0; i < constructors.length; i++) {
 System.out.print(Modifier.toString(constructors[i].getModifiers()) + “参数:”);
 Class[] parametertypes = constructors[i].getParameterTypes();
 for (int j = 0; j < parametertypes.length; j++) {
 System.out.print(parametertypes[j].getName() + " “);
 }
 System.out.println(”");
 }
 获取类中特定的构造方法
 我们可以通过getConstructors方法获取类中 所有的public类型的构造方法,代码和上面一样就不演示了。
 我们可以通过getDeclaredConstructor()方法传参获取特定参数类型的构造方法,这里注意是getDeclaredConstructor()不是 getDeclaredConstructors() ,所以返回的是一个Class对象而不是一个Class数组。










