首页 > 代码库 > ja获取Unsafe类的实例和取消eclipse编译的错误和警告
ja获取Unsafe类的实例和取消eclipse编译的错误和警告
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就不会再报警告或者错误了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。