通過反射例項化 sun.misc.Unsafe
public static Unsafe getUnsafe() {
try {
Field unsafe = Unsafe.class.getDeclaredField("theUnsafe");
unsafe.setAccessible(true);
return (Unsafe) unsafe.get(null);
} catch (IllegalAccessException e) {
// Handle
} catch (IllegalArgumentException e) {
// Handle
} catch (NoSuchFieldException e) {
// Handle
} catch (SecurityException e) {
// Handle
}
}
sun.misc.Unsafe
有一個 Private 建構函式,靜態 getUnsafe()
方法通過檢查類載入器來保護,以確保程式碼是用主類載入器載入的。因此,載入例項的一種方法是使用反射來獲取靜態欄位。