1.反射机制的作用
通过java语言种的反射机制可以修改操作字节码文件。优点类似于黑客、可以读和修改字节码文件。通过反射机制可以操作代码片段。(class文件)
2.反射机制的相关类在哪个包下
java.lang.reflect.*
3.反射机制的相关类有哪些
- java.lang.Class 代表整个字节码,代表一个类型
- java.lang.reflect.Method 代表字节码种的方法字节码
- java.lang.reflect.Constractor 代表字节码种的构造方法字节码
- java.lang.reflect.Field 代表字节码种的属性字节码
java.lang.Class public class User{ //Field int no; //Constructor public User(){ } public User(int no){ this.no = no; } public void setNo(int no){ this.no = no; } public int getNo(){ return no; } }
4.获取class的三种字节码
static Class<?> forName(String className)
- 返回与带有给定字符串名的类或接口相关联的
Class
对象。- 静态方法
- 方法的参数是一个字符串
- 字符串需要一个完整类名
- 完整类名必须带有包名。java.lang包也不能省略
Class c1 = Class.forName("java.lang.String");
代表String类型
final Class<?> getClass()
- 返回此
Object
的运行时类。返回的Class
对象是由所表示类的static synchronized
方法锁定的对象。- 实际结果类型是
Class<? extends |X|>
,其中|X|
表示清除表达式中的静态类型,该表达式调用getClass
。String s = "abc" Class x = s.getClass();
x代表String类型
java语言中任何一种任何一种类型,包括基本数据类型,都有.class属性
Class a = String.class
a代表String类型
5.反射机制的灵活性
java代码写一遍不再改变java源代码的基础之上,可以做到不同对象的实例化。非常灵活
Spring,SpringMVC等高级框架底层实现原理都采用了反射机制。学习了反射机制有利于理解剖析底
6.如果只希望一个类的静态代码块执行,其他代码一律不执行。可以使用Class.forName("完整类名");Class.forName()这个方法执行会导致类加载,