java輔導(dǎo):JAVA中的反射機制詳解

字號:

JAVA反射機制是在運行狀態(tài)中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調(diào)用它的任意一個方法;這種動態(tài)獲取的信息以及動態(tài)調(diào)用對象的方法的功能稱為java語言的反射機制。
    Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類;在運行時構(gòu)造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調(diào)用任意一個對象的方法;生成動態(tài)代理。
    1. 得到某個對象的屬性
    public Object getProperty(Object owner, String fieldName) throws Exception {
    Class ownerClass = owner.getClass();
    Field field = ownerClass.getField(fieldName);
    Object property = field.get(owner);
    return property;
    }
    Class ownerClass = owner.getClass():得到該對象的Class。
    Field field = ownerClass.getField(fieldName):通過Class得到類聲明的屬性。
    Object property = field.get(owner):通過對象得到該屬性的實例,如果這個屬性是非公有的,這里會報IllegalAccessException。
    2. 得到某個類的靜態(tài)屬性
    public Object getStaticProperty(String className, String fieldName)
    throws Exception {
    Class ownerClass = Class.forName(className);
    Field field = ownerClass.getField(fieldName);
    Object property = field.get(ownerClass);
    return property;
    }
    Class ownerClass = Class.forName(className) :首先得到這個類的Class。
    Field field = ownerClass.getField(fieldName):和上面一樣,通過Class得到類聲明的屬性。
    Object property = field.get(ownerClass) :這里和上面有些不同,因為該屬性是靜態(tài)的,所以直接從類的Class里取。