6

Java 9 モジュール システムに適合するベスト プラクティスを使用して、利点を得るために行う作業を少なくしようとしています (そして、現在のシステムは、いくつかのモジュール性から実際に利益を得ることができます)。

現在の標準では、モジュール A がパッケージ com.example.foo をエクスポートし、モジュール B がパッケージ com.example.foo をエクスポートすることは許可されていますか?

関連する質問として、関連する場合、この点が実際に解決されているか、それともまだ最終的ではないかということです.

4

1 に答える 1

8

最新のState of the Module Systemによると、モジュール システムは、「すべてのモジュールが特定のパッケージを定義するモジュールを最大 1 つ読み取り、同じ名前のパッケージを定義するモジュールが互いに干渉しない」ことを保証します。そして、「モジュール内のコードがパッケージ内の型を参照する場合、そのパッケージは、そのモジュールまたはそのモジュールによって読み取られるモジュールの正確に 1 つのいずれかで定義されることが保証されます。」

これは、ビルド時と実行時に、A と B の両方に同時に依存するモジュールがなく、A と B が互いに依存していない場合、2 つの異なるモジュールが同じパッケージをエクスポートする可能性があることを意味します。理論的には、同じパッケージをエクスポートする 2 つのモジュールを用意し、それらを別の依存モジュールで一度に 1 つずつ使用することができます。

また、すでに提案されているように、パッケージを 2 つではなく 1 つのモジュールでエクスポートするのがベスト プラクティスであることも提案します。

于 2016-12-06T00:47:52.760 に答える