天天看點

java173-class反射程式設計方法

//class反射程式設計
 //定義一個學生類
 public class test124 {
     public String name;
     protected int age;
  
     double height;
     private double money;
  
     public test124(String name,Integer age){
         this.name=name;
         this.age=age;
     }
  
     public test124(String name,int age,double money){
         this.name=name;
         this.age=age;
         this.money=money;
     }
     //看書
     public void learn(BookRead book){
         System.out.println( "我的名字"+name+ "我正在學習"+book.getName());
     }
     //奔跑
     public void run(){
         System.out.println( "我們喜歡奔跑" );
     }
 }
 定義public class BookRead {
     private String name;
  
     public void setName(String name) {
         this.name = name;
     }
  
     public String getName() {
         return name;
     }
 }
 測試import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
  
 public class test126 {
     /*使用class實作反射程式設計,建立對象,擷取類的相關資訊
      * */
     public static void main(String[] args){
         String packageName=test124.class.getPackage().getName();
         System.out.println( "包名"+packageName);
         try {
             Class<?> stuClass=Class.forName( "test124" );
             System.out.println( stuClass.getName() );
             //使用位元組碼對象擷取這個對象的執行個體
             //test124 stuObj=(test124)stuClass.newInstance();
             //System.out.println(stuObj!=null );
             //擷取類的通路級别
             System.out.println( stuClass.getModifiers()== Modifier.PUBLIC );
             //擷取所有公共級别的字段(成員屬性)
             Field[] fields=stuClass.getFields();
             System.out.println(fields.length  );
             //所有通路級别的成員屬性
             System.out.println(stuClass.getDeclaredFields().length );
             //擷取類中的構造器
            Constructor con0= stuClass.getConstructor( String.class,Integer.class );
            System.out.println( con0!=null );
            //擷取類中定義的方法
             Method[] methods=stuClass.getMethods();
             System.out.println( methods.length );
             for(Method m:methods){
                 System.out.println( m );
             }
         }catch (Exception e){
  
         }
     }
 }      

運作結果

java173-class反射程式設計方法