2009-07-11 114 views

回答

3

在猜测,我会说,这是通过反思目标类型和设置字段中直接使用反射

做我不是一个Java程序员,但我相信Java有同样的反射支持到我使用的.NET的那个。

4

尝试

import java.lang.reflect.Field; 

class Test { 
    private final int value; 
    Test(int value) { this.value = value; } 
    public String toString() { return "" + value; } 
} 

public class Main { 
    public static void main(String... args) throws NoSuchFieldException, IllegalAccessException { 
     Test test = new Test(12345); 
     System.out.println("test= "+test); 

     Field value = Test.class.getDeclaredField("value"); 
     value.setAccessible(true); 
     System.out.println("test.value= "+value.get(test)); 
     value.set(test, 99999); 
     System.out.println("test= "+test); 
     System.out.println("test.value= "+value.get(test)); 
    } 
} 

打印

test= 12345 
test.value= 12345 
test= 99999 
test.value= 99999