Java Language Instanciation de sun.misc.Unsafe via la réflexion


Exemple

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 possède un constructeur Private et la getUnsafe() statique getUnsafe() est protégée par une vérification du chargeur de classe pour garantir que le code a été chargé avec le chargeur de classe principal. Par conséquent, une méthode de chargement de l'instance consiste à utiliser la réflexion pour obtenir le champ statique.