java反射机制
java.lang.Class
反射机制中主要掌握的类
xjava.lang.Classjava.lang.reflect.Constructorjava.lang.reflect.Fieldjava.lang.reflect.Methondjava.lang.reflect.Modifier反射机制的作用
1.反编译 .class->.java
2.通过反射机制访问java对象的属性,方法,构造方法等
获取Class类型对象的三种方式
xxxxxxxxxxpublic class Employee{//Field
private String name;public Employee(){}public Employee(String name){this.name=name;}//方法
public void work(){System.out.println(name+"在工作!");}}编译此类 生成Employee.class文件
xpublic class ReflectTest01{public static void main(String[] arg){//第一种方法
class c1=class.forName("Employee");//c1引用保存内存地址指向堆中的对象,该对象代表的是Employee整个类。//第二种方法
class c2=Employee.class;//每个类型都有class属性。//第三种方法
//java语言中任何一个java对象都有getClass方法
Employee e=new Employee();Class c3=e.getClass();//c3是运行时类(e的运行时类是Employee)//因为Employee这个类在JVM中只有一个,所以c1,c2,c3的内存地址是相同的,指向堆中唯一的一个对象。
System.out.println(c1==c2);//trueSystem.out.println(c2==c3);//trueclass c4=Date.class;//c4代表Date这个类class c5=class.forName("java.util.Date");//必须写类全名,类全名带有包名Date d=new Date();class c6=d.getClass();}}xxxxxxxxxxpublic class ReflectTest02{public static void main(String[] args)throw Exception{//将A.class文件装载到JVM中的过程
//Class.forName("A");
//不会执行静态语句块
//class c=A.Class;
}}class A{static{
System.out.println("0000");}}
转载于:https://www.cnblogs.com/kq-L/p/5865286.html