どのようにJavaのモジュールは、モジュールに影響反射のアクセスをディレクティブのですか?

ギリ:

よるとhttps://www.oracle.com/corporate/features/understanding-java-9-modules.html、Javaのモジュールシステムは、次のディレクティブが導入されています。

  • 輸出、輸出に...
  • 用途
  • 提供しています...と
  • オープン、開く、開く...に

各ディレクティブは、リフレクションを使用して内部のメンバーにアクセスする外部モジュールにどのような(もしあれば)影響がありますか?

例えば、ないexports <package>外部モジュールは、すべてにアクセスできるようにするpublicprotectedprivateエクスポートしたパッケージのメンバーは、リフレクションを使用して?どのような他のディレクティブについてはどうですか?

また:

私は単に引用でしょう#のJLS7.7を(私がフォーマットされ、分類)ここに:

実行時に、コンパイル時とアクセス時のアクセスとは異なる、のJava SEプラットフォームは、コアリフレクションAPIを介して反射型のアクセスを提供する(§1.4)

もっとあなたの質問ノーマルモジュールとして分類(へのmodule foo()とオープンモジュールopen module bar):

通常のモジュール

通常のモジュールは、反射付与明示的にエクスポートまたは明示的に開放されるパッケージのみにタイプへのアクセスを(または両方)。

  • モジュールのエクスポートされたパッケージ(exports com.example.foo.bar

    以下のために通常モジュール外部コード、モジュールのエクスポート(および開かれていない)パッケージ内の型に付与された反射アクセスは、具体的にあるpublicprotectedTY P ESこれらのパッケージであり、publicおよびprotected メンバーそれらのタイプの。

  • モジュールの開いたパッケージ(opens com.example.foo.internal to com.example.bar

    (エクスポートされたかどうか)、モジュールの開かれたパッケージ内の型に付与された反射のアクセスがにあるそれらのパッケージ内のすべての種類、およびそれらの型のすべてのメンバー

    反射アクセスは、エクスポートまたは開かれていないパッケージ内の型、またはそのメンバーに付与されません

  • モジュール内

    コードモジュール内では、すべてのタイプ、およびへの反射のアクセス楽しんモジュール内のすべてのパッケージには、すべてのメンバーを

オープンモジュール

オープンモジュールには、反射のアクセス許可するすべてのパッケージが開かれていたかのように、すべてのパッケージで型にします

  • モジュールの開いたパッケージ

    コードのために開いたモジュールの外、モジュールの開かれたパッケージ(で、モジュール内のすべてのパッケージ)内の型に付与された反射のアクセスがあるそれらのパッケージ内のすべての種類、およびそれらの型のすべてのメンバーに

  • モジュール内

    コードモジュール内には、反射アクセス楽しんモジュール内のすべてのパッケージには、すべてのタイプ、およびすべてのメンバーにします

おすすめ

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