熟练的使用反射的API,才可以熟练的写框架,不会语法,如何写句子?
public class ReflectTest {
public static void main(String[] args) throws Exception {
//加载类
Class<Student> clazz = (Class<Student>) Class.forName("Student");
//获取类名
System.out.println(clazz.getSimpleName()); //获取类的名字
System.out.println(clazz.getName()); //类的全路径名字
/**
* 获取类的所有声明属性
* 与getFields方法的区别是:getFields方法只能获取到public权限的,以后的获取方法,构造函数等都与此类似
*/
Field[] declaredFields = clazz.getDeclaredFields();
for (Field field : declaredFields) {
System.out.println("属性-" + field.getName());
}
//获取指定名字的属性
Field field = clazz.getDeclaredField("name");
System.out.println(field);
/**
* 获取方法
*/
Method[] declaredMethods = clazz.getDeclaredMethods();
for (Method method : declaredMethods) {
System.out.println(method);
}
/**
* 获取制定名字的方法
* 第二个参数为可变长参数,对应方法的参数列表(没有的话就null)
*/
Method declaredMethod = clazz.getDeclaredMethod("setName", String.class);
System.out.println(declaredMethod);
/**
* 获取类的构造方法
*/
Constructor<Student>[] declaredConstructors = (Constructor<Student>[]) clazz.getDeclaredConstructors();
for (Constructor<Student> constructor : declaredConstructors) {
System.out.println(constructor);
}
/**
* 获取制定名字的构造方法
*/
Constructor<Student> declaredConstructor = clazz.getDeclaredConstructor(null);
System.out.println(declaredConstructor);
}
}