Rumah >Java >javaTutorial >Akses Reflektif Haram Java 9: ​​Bagaimana Mengenalpasti, Mencetuskan dan Menyelesaikan Amaran?

Akses Reflektif Haram Java 9: ​​Bagaimana Mengenalpasti, Mencetuskan dan Menyelesaikan Amaran?

Barbara Streisand
Barbara Streisandasal
2024-12-18 17:59:14460semak imbas

Java 9's Illegal Reflective Access: How to Identify, Trigger, and Resolve Warnings?

Memahami Akses Reflektif Haram di Java 9

Akses reflektif haram di Java 9 merujuk kepada operasi reflektif tertentu yang melanggar prinsip pengkapsulan modul yang diperkenalkan dalam versi ini. Akses reflektif membolehkan program mengakses ahli kelas lain secara dinamik, tanpa mengira pengubah keterlihatan mereka.

Apakah Yang Mentakrifkan Akses Reflektif Haram?

Akses reflektif haram berlaku apabila:

  • Modul cuba mengakses ahli modul lain yang tidak secara eksplisit diisytiharkan sebagai terbuka kepadanya.
  • Modul menggunakan API pantulan untuk memanggil pembina, medan atau kaedah yang tidak boleh diakses oleh kod modul.

Bagaimanakah Akses Reflektif Haram Dicetuskan?

Waktu jalan Java 9 memantau operasi reflektif. Apabila akses haram dikesan, mesej amaran dikeluarkan. Amaran ini boleh ditindas dengan menyatakan secara manual argumen --illegal-access JVM dengan salah satu daripada mod berikut:

  • permit: Keluarkan amaran untuk akses dan senyap haram yang pertama yang seterusnya.
  • amaran: Keluarkan amaran untuk setiap yang menyalahi undang-undang akses.
  • nafikan: Lumpuhkan semua operasi reflektif yang menyalahi undang-undang.

Senario yang Mencetuskan Amaran

Senario yang menyalahi undang-undang amaran capaian reflektif dicetuskan apabila keadaan berikut met:

  • Argumen --ilegal-access JVM ditetapkan untuk membenarkan atau memberi amaran.
  • Modul cuba mengakses ahli modul lain yang tidak terbuka kepadanya.
  • Akses reflektif berlaku melalui rujukan statik daripada kod yang disusun atau melalui penggunaan pantulan API.

Menyelesaikan Akses Reflektif Haram

Untuk mengelakkan amaran akses reflektif yang menyalahi undang-undang, pertimbangkan langkah berikut:

  • Pastikan bahawa semua modul mengisytiharkan kebergantungan mereka dan membuka pakej antara satu sama lain mengikut keperluan.
  • Gunakan --add-opens argumen VM untuk membuka pakej secara eksplisit antara modul.
  • Hapuskan rujukan statik kepada API dalaman JDK daripada kod yang disusun.
  • Tetapkan argumen JVM --illegal-access untuk dinafikan kepada lumpuhkan operasi reflektif yang menyalahi undang-undang dan kuatkuasakan enkapsulasi yang kuat.

Atas ialah kandungan terperinci Akses Reflektif Haram Java 9: ​​Bagaimana Mengenalpasti, Mencetuskan dan Menyelesaikan Amaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn