Rumah >Java >javaTutorial >Apakah Akses Reflektif Haram di Java 9 dan Bagaimana Saya Boleh Membetulkannya?

Apakah Akses Reflektif Haram di Java 9 dan Bagaimana Saya Boleh Membetulkannya?

DDD
DDDasal
2024-12-05 03:07:13225semak imbas

What is Illegal Reflective Access in Java 9 and How Can I Fix It?

Akses Reflektif Haram di Java 9

Berikutan pengenalan modulariti dalam Java 9, pembangun telah menghadapi isu yang berkaitan dengan akses reflektif haram. Untuk memahami sepenuhnya konsep ini, adalah penting untuk terlebih dahulu memahami Sistem Modul "Relaxed-strong-encapsulation."

Definisi Akses Reflektif Haram

Akses reflektif haram merujuk kepada situasi di mana operasi reflektif dilakukan dengan cara yang tidak dimaksudkan oleh prinsip reka bentuk modular. Ia melanggar halangan pengkapsulan yang ditetapkan antara modul dan pakejnya.

Keadaan Mencetuskan Amaran

Amaran untuk akses reflektif haram dicetuskan apabila:

  • Modul mengakses pakej dalaman modul lain tanpa menggunakan pengisytiharan modul yang betul atau hujah VM (cth., --add-opens).
  • Kod yang disusun mengakses API JDK dalaman.

Kelonggaran Prinsip Kapsul

Java 9 memperkenalkan pilihan pelancar --ilegal-access dengan tetapan lalai permit untuk membantu dalam penghijrahan. Dalam mod permit:

  • Operasi capaian reflektif haram yang pertama kepada pakej menjana amaran.
  • Operasi seterusnya tidak mencetuskan amaran.

Mod Konfigurasi

Pilihan --ilegal-access boleh dikonfigurasikan dengan berbeza mod:

  • nyahpepijat: Menyediakan amaran dan surih tindanan untuk setiap akses yang menyalahi undang-undang.
  • amaran: Mengeluarkan amaran untuk setiap akses yang menyalahi undang-undang.
  • menolak: Menolak operasi capaian haram.

Cara Mengenalpasti dan Betulkan

Untuk mengelakkan akses reflektif yang menyalahi undang-undang, pembangun boleh:

  • Jalankan aplikasi dengan --illegal-access=deny untuk mengesan akses tanpa kebenaran.
  • Kenal pasti rujukan statik kepada API JDK menggunakan alat jdeps (dengan --jdk-internals pilihan).

Mesej Amaran

Operasi capaian reflektif yang tidak sah menghasilkan amaran dengan format berikut:

WARNING: Illegal reflective access by $PERPETRATOR to $VICTIM

di mana:

  • $PERPETRATOR: Jenis yang menggunakan reflektif operasi
  • $VICTIM: Ahli sedang diakses

Memastikan Keserasian Masa Depan

Untuk memastikan keserasian masa hadapan, adalah penting untuk menghapuskan akses reflektif yang menyalahi undang-undang dan pastikan modul mengikut prinsip enkapsulasi yang betul.

Atas ialah kandungan terperinci Apakah Akses Reflektif Haram di Java 9 dan Bagaimana Saya Boleh Membetulkannya?. 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