- 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 未命名模塊路徑,且僅能使用反射訪問,或者用自動模塊作為橋梁