Walaupun Java sekatan untuk mengakses kaedah persendirian melalui refleksi, terdapat penyelesaian untuk mengatasi had ini. Untuk menggunakan kaedah peribadi melalui refleksi, seseorang boleh memanfaatkan pendekatan berikut:
Pertama, dapatkan kaedah peribadi menggunakan getDeclaredMethod(String methodName) dan bukannya getMethod(String methodName). Kaedah ini membenarkan akses kepada kedua-dua kaedah awam dan peribadi yang diisytiharkan dalam kelas semasa.
Kemudian, untuk memintas sekatan akses lalai pada kaedah persendirian, gunakan kaedah setAccessible(boleh diakses boolean) untuk memberikan kebolehaksesan. Dengan menetapkan boleh diakses kepada benar, anda mengatasi tetapan perlindungan dan membenarkan penggunaan kaedah persendirian.
Akhir sekali, gunakan kaedah persendirian menggunakan invoke(Object object, Object... args) dengan objek yang dikehendaki dan mana-mana yang diperlukan argumen.
Berikut ialah versi kemas kini bagi kod yang disediakan dalam soalan asal:
Method method = object.getClass().getDeclaredMethod(methodName); method.setAccessible(true); Object r = method.invoke(object);
Kaveat:
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Kaedah Peribadi Menggunakan Refleksi dalam Java Walaupun Sekatan Akses?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!