Java獲取反射的三種方法


1. 通過new對象實現反射機制( 對象.getClass() )
2. 通過路徑實現反射機制( Class.forName("包名.類名") )
3. 通過類名實現反射機制 ( 類名.Class )
class Student {
    private int id;
    String name;
    protected boolean sex ;
    pub1ic f1oat score;
}

pub1ic class Get {
    //獲取反射機制三種方式
    public static void main(String[] args) throws ClassNotFoundException {
        //方式一(通過建立對象)
        Student stu = new StudentO ;
        Class classobj1 = stu. getClassO;
        System. out. print1n(classobj1. getNameO);
        //方式二(所在通過路徑-相對路徑)
        Class classobj2 = Class . forName (" fanshe . Student") ;
        System. out. println(classobj2. getName0) ;
        //方式三(通過類名)
        Class classobj3 = Student.class;
        System. out. println(classobj3. getName0) ;
    }
}
           

  

   Java 反射機制是在運行狀態中,對於任意一個類,都能夠獲得這個類的所有屬性和方法,對於任意一個對象都能夠調用它的任意一個屬性和方法。這種在運行時動態的獲取信息以及動態調用對象的方法的功能稱為 Java 的反射機制。
  Class 類與 java.lang.reflflect 類庫一起對反射的概念進行了支持,該類庫包含了 Field,Method,Constructor 類 (每個類都實現了 Member 接口)。 這些類型的對象時由 JVM 在運行時創建的,用以表示未知類里對應的成員。這樣你就可以使用 Constructor 創建新的對象,用 get() 和 set() 方法讀取和修改與 Field 對象關聯的字段,用invoke() 方法調用與 Method 對象關聯的方法。另外,還可以調用 getFields() getMethods() 和getConstructors() 等很便利的方法,以返回表示字段,方法,以及構造器的對象的數組。這樣 匿名對象的信息就能在運行時被完全確定下來,而在編譯時不需要知道任何事情。
例:
import java.1ang. ref1 ect . Constructor ;
public class ReflectTest {
    public static void main(String[] args) throws Exception {
        Class c1azz = nu11;
        clazz = Class. forName(" com. jas. reflect. Fruit"); 
        Constructor<Fruit> constructor1 = c1azz . getConstructor() ;
        Constructor<Fruit> constructor2 = clazz . getConstructor(String.class) ;
        Fruit fruit1 = constructor1 . newInstance() ;
        Fruit fruit2 = constructor2 . newInstance("Apple");
class Fruit{
    public Fruit(){
        System. out. print1n("無參構造器Run..........");
    }
    pub1ic Fruit(String type){
        System. out. print1n("有參構造器Run.........."+type);
    }
}
   
運行結果:    無參構造器 Run………..
      有參構造器 Run………..Apple
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM