java再复习——通过反射获取类的名字,属性,方法,构造器

来源:互联网 发布:剑灵朱丽叶数据 编辑:程序博客网 时间:2024/05/17 01:15

熟练的使用反射的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);}}


0 0