我正在學習反思。當我執行下面的代碼:Java反射是可訪問的方法
package main;
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws NoSuchFieldException, SecurityException {
Base firstBase = new Base();
Field firstBaseField = firstBase.getClass().getDeclaredField("protectedBuffer");
System.out.println(firstBaseField.isAccessible());
}
}
這是基類:
package main;
public class Base {
private StringBuffer buffer;
protected StringBuffer protectedBuffer;
public StringBuffer buffer2;
}
結果是假的。但是這不是真的,因爲我可以這樣訪問protectedBuffer
:firstBase.protectedBuffer
?
我知道我只是在寫String而不知何故它會自動完成StringBuffer。在這種情況下班級是什麼並不重要。 – DPM