反射
发表于更新于
字数总计:370阅读时长:1分钟阅读量: 剑河
后端Java反射
苏泽反射
当动态的获取信息,或者动态的去调用对象的方法,这类相关操作就是反射机制。
创建反射的四种
获取类的方法,方法名,返回类型,以及调用其对象的方法
1 2 3 4 5 6 7 8 9 10
| System.out.println("---------获取类的方法和方法名和返回类型---------------"); Method[] methods = aClass.getMethods(); for (Method method : methods) { System.out.println(Modifier.toString(method.getModifiers())); System.out.println(method.getName()); System.out.println(method.getReturnType()); } Method sayHi = aClass.getMethod("sayHi", String.class); sayHi.invoke(stu1,"小王");
|
获取类的字段以及当前类的字段值
1 2 3 4 5 6 7 8
| Field[] declaredFields = aClass1.getDeclaredFields(); for (Field field : declaredFields) { if(field.getModifiers() == 2){ field.setAccessible(true); } System.out.println(field.get(stu1)); }
|
setAccessible(true) 默认为0
意思是访问private 或protect 等修饰符的字段或方法时,需要改为true,这破坏了类的封装。
反射获取对象的无参或有参构造器可以创建一个实例。
1 2 3
| Class<? extend Student1> aClass1 = stu1.getClass(); Class<? extend Student1> stu2 = aClass1.getConstructor(); stu2.sayHi("实例对象");
|
总结
4种创建反射的方式,反射的用法,以及,通过反射创建实例。