淺談Java反射機制

openkk 13年前發布 | 14K 次閱讀 Java Java開發

一 從一個實例出發--在運行時獲取某個對象相關信息

1. 我們首先定義一個Customer類,表示客戶的相關信息

public  class Customer {
        private Long id;
        private String name;
        private int age;
        private String phone;
        public Customer() {

        }
        public Customer(Long id,String name,int age,String phone) {
            this.id=id;
            this.name=name;
            this.age=age;
            this.phone=phone;
        }
        public final Long getId() {
            return id;
        }
        public void setId(Long id) {
            this.id=id;
        }
        public final String getName() {
            return name;
        }
        public final void setName(String name) {
            this.name=name;
        }
        public final int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age=age;
        }
        public final String getPhone() {
            return phone;
        }
        public void setAge(String phone) {
            this.phone=phone;
        }
    }
2. 現在我們寫一個類,實現獲取Customer實例所有的構造方法和普通方法及屬性信息
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class ReflectionApplication {

    /**
     * @param args
     */
    public static void ShowObjectInfo(Object obj) throws Exception {
        Class c=obj.getClass();
        int i;
        System.out.println(obj.toString()+"所有的構造方法是:");
        Constructor [] cs=c.getConstructors();
        for(i=0;i<cs.length;i++) {
            System.out.println(cs[i].toString());
        }

        System.out.println(obj.toString()+"所有的聲明的方法是:");
        Method [] methods=c.getDeclaredMethods();
        for(i=0;i<methods.length;i++) {
            System.out.println(methods[i].toString());
        }

        System.out.println(obj.toString()+"所有的聲明的屬性是:");
        Field[] fields=c.getDeclaredFields();
        for(i=0;i<fields.length;i++) {
            System.out.println(fields[i].toString());
        }
    }
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        Customer customer=new Customer(001L,"wangzhicheng",28,"13866916216");
        ShowObjectInfo(customer);
    }

}
 3. 運行結果是:
Customer@1fb8ee3所有的構造方法是:
public Customer()
public Customer(java.lang.Long,java.lang.String,int,java.lang.String)
Customer@1fb8ee3所有的聲明的方法是:
public void Customer.setId(java.lang.Long)
public final int Customer.getAge()
public void Customer.setAge(int)
public void Customer.setAge(java.lang.String)
public final java.lang.String Customer.getPhone()
public final java.lang.String Customer.getName()
public final java.lang.Long Customer.getId()
public final void Customer.setName(java.lang.String)
Customer@1fb8ee3所有的聲明的屬性是:
private java.lang.Long Customer.id
private java.lang.String Customer.name
private int Customer.age
private java.lang.String Customer.phone
private java.lang.String Customer.phone

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!