首页 > 系统服务 > 详细

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

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

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编译的错误和警告

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!