Rumah >Java >javaTutorial >Apakah itu Capaian Reflektif Haram di Java 9 dan Bagaimana Ia Dimanifestasikan?

Apakah itu Capaian Reflektif Haram di Java 9 dan Bagaimana Ia Dimanifestasikan?

Patricia Arquette
Patricia Arquetteasal
2024-12-05 15:12:10302semak imbas

What is Illegal Reflective Access in Java 9 and How Does It Manifest?

Akses Reflektif Haram

Di Java 9, akses reflektif haram merujuk kepada situasi di mana API reflektif digunakan dengan cara yang melanggar prinsip pengkapsulan yang dipertingkatkan diperkenalkan oleh sistem modul. Ini boleh berlaku apabila kod daripada satu modul cuba mengakses ahli kelas peribadi atau yang dilindungi dalam modul lain tanpa kebenaran yang sewajarnya.

Definisi Akses Reflektif Haram

Akses reflektif haram ditakrifkan sebagai sebarang operasi reflektif yang:

  • Mengakses ahli peribadi atau dilindungi kelas dalam kelas lain modul
  • Memanggil kaedah persendirian kelas dalam modul lain
  • Mengubah suai medan akhir kelas dalam modul lain
  • Mencipta tika kelas yang tidak boleh dilihat secara umum dalam modul lain

Pencetusan Keadaan

Akses reflektif haram dicetuskan apabila:

  • Sebuah kelas dalam satu modul menggunakan pantulan untuk mengakses ahli peribadi atau dilindungi kelas dalam modul lain yang tidak secara eksplisit terdedah kepada modul pertama melalui pengisytiharan modul atau hujah VM.
  • Kelas dalam satu modul menggunakan refleksi untuk memanggil kaedah peribadi a kelas dalam modul lain yang tidak didedahkan secara eksplisit kepada modul pertama.
  • Kelas dalam satu modul menggunakan refleksi untuk mengubah suai medan akhir kelas dalam modul lain yang tidak didedahkan secara eksplisit kepada modul pertama.
  • Kelas dalam satu modul menggunakan pantulan untuk mencipta contoh kelas yang tidak boleh dilihat secara umum dalam yang lain modul.

Sistem Modul dan Enkapsulasi Santai

Java 9 memperkenalkan peraturan pengekapan santai-kuat-kuat yang membenarkan bentuk akses reflektif tertentu yang terhad. Secara khusus, ia membenarkan sistem masa jalan modul untuk membuka pakej dalam modul kepada kod dalam modul yang tidak dinamakan (iaitu, kod pada classpath). Jika sistem masa jalan digunakan dengan pilihan ini dan ia berjaya menggunakan pantulan di mana ia akan gagal, maka akses reflektif "haram" telah berlaku.

Mesej Amaran

Apabila akses reflektif yang menyalahi undang-undang berlaku, mesej amaran dikeluarkan dalam format berikut:

AMARAN: Tidak sah capaian reflektif oleh $PERPETRATOR kepada $VICTIM

di mana:

  • $PERPETRATOR ialah nama yang layak sepenuhnya daripada jenis yang mengandungi kod yang menggunakan operasi reflektif, serta sumber kod ( laluan fail JAR) jika tersedia.
  • $VICTIM menerangkan ahli yang sedang diakses, termasuk nama yang layak sepenuhnya bagi jenis lampiran.

Atas ialah kandungan terperinci Apakah itu Capaian Reflektif Haram di Java 9 dan Bagaimana Ia Dimanifestasikan?. 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