java9学习笔记1-模块系统

  • exports
    导出包,使得被导出的包可以被new,以及反射访问public类以及public属性
  • open
    开放包,或者开放模块,使得 可以被深度反射访问(但不能被new等操作)
    使用open模块时,如果不require该模块,则需要在javac 命令中加入参数 --add-modules 模块名称,模块名称
  • require
    加入依赖
    requires [transitive] [static] <module>;
    transitive :隐式依赖 static:运行时可选依赖

模块创建规则

  • 在同一个项目中.如果存在多个模块,那么这些模块中不能包含相同的 包名
  • 模块系统没有子模块的概念。 也就是说,com.jdojo.person和com.jdojo.person.client是两个单独的模块; 第二个不是第一个的子模块

模块类型

  • 普通模块(Normal modules)
  • 开发模块(Open modules)
  • 自动模块(Automatic modules)
    1 模块名称生成规则
    2 默认导出所有,开放模块
    3 因为没有办法指定require,因此运行时,需要增加 --add-modules
  • 未命名模块(Unnamed modules)
    1 未命名模块访问 普通模块,同样需要在编译和运行时 --add-modules
    2 普通模块访问 未命名模块,需要将编译和运行时 -classpath 未命名模块路径,且仅能使用反射访问,或者用自动模块作为桥梁
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,877评论 18 399
  • 熟悉我的人基本都会知道,我一直喜欢用安卓,准确的说,是喜欢用 Google 的安卓。在用过和体验一堆安卓手机后,我...
    不靠谱电台阅读 261评论 0 1
  • 在最近的几天里,朋友圈里很多人都在争先抢后地发着心灵鸡汤式的段子,内容大多数不过是回顾过去2016年的不足和...
    李幺儿yaoer阅读 203评论 0 0
  • 四月刚挥手而过,五月就迎面赶来。 总结四月做了哪些有意义的事情: 1、读了6本书《书都不会读,你还想成功》,《说话...
    拾乐者阅读 429评论 2 1