3 回答

TA貢獻1777條經驗 獲得超3個贊
使用Java 9 中的Jigsaw項目,您可以完全按照您可以決定要導出的包的方式執行此操作。例如:
module com.yourproject {
exports com.yourproject.package1;
}
這將確保僅package1導出。

TA貢獻1772條經驗 獲得超5個贊
現有答案已經指出,適應這種情況的方法是將您的代碼模塊化(首先添加一個模塊聲明module-info.java)。只是參考sotms#module-declaration詳細說明它們
exports可以添加子句來聲明該模塊使所有且僅public特定包中的類型可供其他模塊使用:
module com.foo.bar {
requires org.baz.qux;
exports com.foo.bar.alpha;
exports com.foo.bar.beta;
}
如果一個模塊的聲明不包含導出子句,那么它根本不會將任何類型導出到任何其他模塊。
并從 JLS 部分導出和打開的包
該exports指令指定要由當前模塊導出的包的名稱。對于其他模塊中的代碼,這將在編譯時和運行時授予對包中的publicand類型以及這些類型的and成員的訪問權限(第 6.6 節)。它還為其他模塊中的代碼授予對這些類型和成員的反射訪問權限。protectedpublicprotected
并進一步涉及合格和不合格的出口......
對于限定指令,包中的公共和受保護類型,以及它們的公共和受保護成員,只能由 to 子句中指定的模塊中的代碼訪問。子句中指定的模塊to被稱為當前模塊的朋友。對于非限定指令,任何模塊中的代碼都可以訪問這些類型及其成員。
添加回答
舉報