标签:
java反射机制
java.lang.Class
反射机制中主要掌握的类
xjava.lang.Class
java.lang.reflect.Constructor
java.lang.reflect.Field
java.lang.reflect.Methond
java.lang.reflect.Modifier
反射机制的作用
? 1.反编译 .class->.java
? 2.通过反射机制访问java对象的属性,方法,构造方法等
获取Class类型对象的三种方式
xxxxxxxxxx
public class Employee{
//Field
private String name;
public Employee(){}
public Employee(String name){
this.name=name;
}
//方法
public void work(){
System.out.println(name+"在工作!");
}
}
编译此类 生成Employee.class文件
x?
public 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);//true
System.out.println(c2==c3);//true
class c4=Date.class;//c4代表Date这个类
class c5=class.forName("java.util.Date");//必须写类全名,类全名带有包名
Date d=new Date();
class c6=d.getClass();
}
}
xxxxxxxxxx
?
public 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");
}
}
标签:
原文地址:http://www.cnblogs.com/kq-L/p/5865286.html