程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java反射機制,java反射

Java反射機制,java反射

編輯:JAVA綜合教程

Java反射機制,java反射


  

java反射機制

java.lang.Class

反射機制中主要掌握的類

 
x
java.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");
  }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved