低水準
import java.lang.reflect.*; import sun.misc.*; class Main { public static void main(String[] args) throws Exception { Unsafe unsafe; Field f = Unsafe.class.getDeclaredField("theUnsafe"); f.setAccessible(true); unsafe = (Unsafe)f.get(null); long addr = unsafe.allocateMemory(4); unsafe.putInt(addr, 1); System.out.println("This machine seems to be " + (unsafe.getByte(addr + 3) == 1 ? "big" : "little") + " endian."); unsafe.freeMemory(addr); } }
環境によっては、低レベルなネイティブメソッドを集結させた sun.misc.Unsafe というクラスがある。それらのメソッドを使うには、まず static メソッド Unsafe.getUnsafe() を使って Unsafe オブジェクトを取得する必要があるのだが、そのメソッドは普通のクラスからは呼び出せないようになっている(スタックトレースが検査される)。しかし、リフレクションを用いると、getUnsafe() を経由しないで直接 Unsafe オブジェクトを取得できてしまう。
ちなみにアプレットでは実行できませんので、念のため。