2012-10-22 13 views
10

का उदाहरण कैसे प्राप्त होता है मैं असुरक्षित वर्ग का उदाहरण कैसे प्राप्त करूं? मुझे हमेशा सुरक्षा अपवाद मिलता है। मैंने OpenJdk6 कार्यान्वयन के कोड को सूचीबद्ध किया। मैं समारोह के साथ गड़बड़ करना चाहता हूं sun.misc.Unsafe मुझे प्रदान करता है, लेकिन मैं हमेशा सुरक्षा अपवाद को असुरक्षित कर देता हूं।मुझे sun.misc.Unsafe

public static Unsafe getUnsafe() { 
    Class cc = sun.reflect.Reflection.getCallerClass(2); 
    if (cc.getClassLoader() != null) 
     throw new SecurityException("Unsafe"); 
    return theUnsafe; 
} 

कृपया मुझे यह बताने की कोशिश न करें कि इस वर्ग का उपयोग करना कितना असुरक्षित है।

उत्तर

26

यह आपको असुरक्षित का उदाहरण देना चाहिए:

@SuppressWarnings("restriction") 
    private static Unsafe getUnsafe() { 
     try { 

      Field singleoneInstanceField = Unsafe.class.getDeclaredField("theUnsafe"); 
      singleoneInstanceField.setAccessible(true); 
      return (Unsafe) singleoneInstanceField.get(null); 

     } catch (IllegalArgumentException e) { 
      throw createExceptionForObtainingUnsafe(e); 
     } catch (SecurityException e) { 
      throw createExceptionForObtainingUnsafe(e); 
     } catch (NoSuchFieldException e) { 
      throw createExceptionForObtainingUnsafe(e); 
     } catch (IllegalAccessException e) { 
      throw createExceptionForObtainingUnsafe(e); 
     } 
    }