咨询电话

在Java 9中使用sun.misc.Unsafe 置顶

发表于2017-03-08 10:37:46 次查看
在  Java的9 EA  版本出来,我们现在可以看到如何使用sun.misc.Unsafe。我领导了公共  运动  ,保持Java 9中的访问权,最终获得成功,导致JEP 260的修订  

那么,事情怎么结束了?

设置

首先,你需要  下载  Java 9 EA。对于IDE,我使用IntelliJ IDEA。您需要新的  2017.1公共预览,它于2017年2月27日发布。早期版本不适用于Java 9。

JDK.Unsupported模块

Sun.misc.Unsafe现在可以在jdk.unsupported模块中使用。此模块存在于完整的JRE和JDK映像中。

这里是jdk.unsupported的模块声明:

 
模块 jdk不支持 {
 
    出口 太阳杂项 ;
 
    出口 太阳反映 ;
 
    出口 公司太阳nio文件 ;
 

 
    打开 太阳杂项 ;
 
    打开 太阳反映 ;
 
}}
 

 

正如你可以看到,sun.misc被导出。

使用它

我有一个示例项目与一个包java9unsafe和具有相同名称的模块。

要使用Unsafe,您需要将jdk.unsupported添加到代码的模块声明中:

 
module  java9unsafe {
 
    需要 jdk不支持的 ;
 
}}
 

 

幸运的是,IDEA会检测声明是否丢失,并建议您在将鼠标悬停在导入语句上时为其添加。

然后可以使用Unsafe。注意,你必须通过反射间接获得Unsafe实例,否则你会得到一个安全异常。

 
模块 jdk不支持 {
 

 
public  class  Java9Unsafe {
 

 
    public  static  void  mainString [] argsthrows  NoSuchFieldExceptionIllegalAccessException {
 
        系统出来println“地址大小是:”  +  getUnsafe()。addressSize());
 
    }}
 

 
    @SuppressWarnings“限制”
 
    private  static  Unsafe  getUnsafe()throws  NoSuchFieldExceptionIllegalAccessException {
 
        字段 singleoneInstanceField  =  不安全getDeclaredField“theUnsafe”);
 
        singleoneInstanceFieldsetAccessibletrue);
 
        returnUnsafesingleoneInstanceFieldgetnull);
 
    }}
 

 
}}
 

\

在线客服
  • 点击这里给我发消息
  • 点击这里给我发消息
  • 微信扫一扫
  • 官方微信