對于類的私有屬性,如果沒有提供公用方法去修改它,我們可以通過反射方法實作。下面為簡單例子
操作對象類:
import java.util.ArrayList;
import java.util.List;
public class A {
private List<Integer> list = new ArrayList<Integer>();
public List<Integer> getList() {
return list;
}
}
使用方法:
import java.lang.reflect.Field;
import java.util.List;
public class Test {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
A a = new A();
try {
Field field = A.class.getDeclaredField("list");
field.setAccessible(true);
List<Integer> myList = (List<Integer>) field.get(a);
myList.add(1);
for (Integer i : a.getList()) {
System.out.println(i);
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}