Mengakses Medan Peribadi melalui Reflection dalam Java
Pengenalan
Mekanisme enkapsulasi Java membenarkan pemaju untuk mengehadkan akses kepada ahli objek, seperti medan peribadi. Walau bagaimanapun, adalah mungkin untuk memintas sekatan ini menggunakan API refleksi Java. Artikel ini meneroka sama ada dan cara medan peribadi boleh diakses melalui refleksi.
Mengakses Medan Peribadi
Ya, adalah mungkin untuk mengakses medan peribadi melalui refleksi. Untuk mencapai ini:
Contoh:
Pertimbangkan kelas Ujian berikut dengan str medan persendirian:
<code class="java">class Test { private String str; public void setStr(String value) { str = value; } }</code>
Untuk mengakses medan str melalui pantulan:
<code class="java">import java.lang.reflect.*; class Other { public static void main(String[] args) throws Exception { Test t = new Test(); t.setStr("hi"); Field field = Test.class.getDeclaredField("str"); field.setAccessible(true); Object value = field.get(t); System.out.println(value); } }</code>
Awas:
Walaupun secara teknikalnya mungkin, mengakses medan persendirian melalui pantulan boleh memberi kesan yang signifikan kelemahan:
Oleh itu, mengakses medan peribadi melalui refleksi harus dilakukan dengan berhati-hati dan hanya apabila benar-benar perlu.
Atas ialah kandungan terperinci Bolehkah Anda Mengakses Medan Peribadi di Java Menggunakan Refleksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!