2011-11-03 26 views
9

Tôi có một lớp Java với một biến tĩnhTiếp cận tĩnh biến thức sử dụng phản ánh

package com.mytest 
public class MyClass{ 
    public static final TextClass TEXT_CLASS = new TextClass(); 
} 

Làm thế nào tôi có thể truy cập các đối tượng TEXT_CLASS sử dụng phản ánh?

(Tôi có chuỗi "com.mytest.MyClass.TEXT_CLASS". Tôi cần phải truy cập vào đối tượng.)

Trả lời

24

Tiếp cận lĩnh vực tĩnh được thực hiện chính xác theo cùng một cách như các lĩnh vực bình thường, chỉ có bạn không cần phải vượt qua bất kỳ đối số cho phương pháp Field.get() (bạn có thể vượt qua một null).

Hãy thử cách này:

Object getFieldValue(String path) throws Exception { 
    int lastDot = path.lastIndexOf("."); 
    String className = path.substring(0, lastDot); 
    String fieldName = path.substring(lastDot + 1); 
    Class myClass = Class.forName(className); 
    Field myField = myClass.getDeclaredField(fieldName); 
    return myField.get(null); 
} 
Các vấn đề liên quan