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{//Fieldprivate 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");}}