码迷,mamicode.com
首页 > 系统相关 > 详细

ja获取Unsafe类的实例和取消eclipse编译的错误和警告

时间:2014-07-29 22:00:12      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:获取unsafe对象

JRE的rt.jar中提供了一个类sun.misc.Unsafe,虽然这个类因为其不其安全性,不建议使用,而且被加了诸多限制;但

是在很多场合下我们确实需要这个类提供的强大功能。JDK类库下的NIO和concurrent包下的很多类都使用到了Unsafe

类,如AtomicInteger和AbstractQueuedSynchronizer等。

 

JDK源码中对这个类进行了严格限制,我们不能通过常规new的方式去获取该类的实例,也不能通过Unsafe.getUnsafe

()来获取实例。但是我们可以通过反射,在我们的应用代码中获取Unsafe类的实例:

public static Unsafe getUnsafeInstance() throws Exception
{
        // 通过反射获取rt.jar下的Unsafe类
        Field theUnsafeInstance = Unsafe.class.getDeclaredField("theUnsafe");
        theUnsafeInstance.setAccessible(true);
        // return (Unsafe) theUnsafeInstance.get(null);是等价的
        return (Unsafe) theUnsafeInstance.get(Unsafe.class);
}

在eclipse编写完这个函数之后,会出现错误或者警告提示:Access restriction: The type Unsafe is not accessible

due to restriction on required library C:\Program Files\Java\jdk1.6.0_32\jre\lib\rt.jar。

虽然这段代码在eclipse里面会报经过或者报错,但它的却是可以运行的。我们可以在eclipse进行如下设置,来取消警

告或错误:Window-->Preferences-->Java-->Compiler-->Errors/Warnings,将里面的Deprecated and restricted API中

Forbidden references(access rules)设置成Ignore,这样eclipse就不会再报警告或者错误了。

ja获取Unsafe类的实例和取消eclipse编译的错误和警告,布布扣,bubuko.com

ja获取Unsafe类的实例和取消eclipse编译的错误和警告

标签:获取unsafe对象

原文地址:http://blog.csdn.net/aitangyong/article/details/38276681

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!