Javaの10、のIntelliJの警告(クラスが同じモジュールにアクセスして、エクスポートされません)

雪:

私は私のプロジェクトの一つであるIntelliJでJavaの10を使用しようと警告出くわしています。

ここでは、画像の説明を入力します。

私が、クラスのサーバーをエクスポートするわけではないと言っています。あなたは私のパッケージ構造が表示された場合、私は、サーバー内部に持っているnetwork。このようなパッケージ私のモジュール-infoファイルのルックスを

module core {
    requires com.google.guice;

    requires io.netty.all;

    requires config;

    requires org.apache.logging.log4j;

    exports com.money.heist.server.core;

    opens com.money.heist.server.core.network to com.google.guice;
}

私はそれを行うにはしたくないが、私は親パッケージ内のネットワーク・パッケージ内のクラスを使用したいと私は意図的にパッケージネットワークを輸出しておりません。

ここではそのいずれかの良い/悪い習慣であるか、それだけのIntelliJが狂っていますか?

また:

あなたは警告メッセージを拡大する場合は、その背後にある理由を見つけるだろう

それに加えて、Javaの9のモジュールは、そのパッケージをエクスポートしないことによって、そのクラスの一部を隠すことがあります。

非エクスポートパッケージからエクスポートしたパッケージ参照クラスで、クラスの公開API場合は、そのようなAPIは、モジュールの便利な外ではありません。

そのようなAPIが有用ではない理由は、他のモジュールが/アクセスインスタンス化することはできないということであるServerクラスを。

注目すべき、あなたのモジュールの記述子に、あなたは含めました

opens com.money.heist.server.core.network to com.google.guice;

そのアクセスを提供するコンパイル時実行時ではなくに、(IntelliJのは、それを感知しない理由は、おそらく理由)publicprotected、パッケージ内の型、およびpublicおよびprotectedそれらが開かれているモジュールにこれらのタイプのメンバー。

あなたが変更した場合は、上記に関連することopensにディレクティブをexports、あなたはさらにIntelliJのからの警告は表示されません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=210862&siteId=1