1、反射机制有什么用?
通过java语言中的反射机制可以操作字节码文件,有点类似于黑客。(可以读和修改字节码文件)通过反射机制可以操作代码片段。(class文件)
2、反射机制的相关类在哪个包下?
java.lang.reflect.*;
3、反射机制相关的类有哪些?
java.lang.Class<T>
:整个字节码文件,一个类型(一个类)
java.lang.reflect.Method
:代表字节码中的方法字节码(类中的方法)
java.lang.reflect.Constructor<T>
:代表字节码中的构造方法字节码(类中的构造方法)
java.lang.reflect.Field
:代表字节码中的属性字节码(成员变量)
Class c = Class.forName("完整英名带包含");
Class c = 对象.getClass();
Class c = 任何类型.class;
import java.util.Date;
public class Demo{
public static void main(String[] args){
/*第一种*/
Class c1 = null;
Class c2 = null;
Class c3 = null;
try {
//c1代表String.class文件或String类型
c1 = Class.forName("java.lang.String");
//c2代表Integer类型
c2 = Class.forName("java.lang.Integer");
//c3代表Date类型
c3 = Class.forName("java.util.Date");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
/*第二种*/
//java中任何一个对象都有getClass()方法
String s = "abc";
//x代表String.class字节码文件,x代表String类型。
Class x = s.getClass();
//判断内存地址
System.out.println(c1 == x);
/*输出:true,
字节码文件装载到JVM中的时候只装载一份*/
Date date = new Date();
Class y = date.getClass();
System.out.println(y == c3);
//输出:true
/*第三种*/
/*java语言中任何一种类型,
包括基本数据类型,它都有.class属性。*/
Class q = String.class;
Class w = int.class;
Class e = Date.class;
System.out.println(x == q);
//输出:true
System.out.println(y == e);
//输出:true
}
}
原文:https://www.cnblogs.com/yu011/p/13111402.html