Dalam Java, nama parameter kaedah tidak boleh diakses secara lalai, membawa kepada persoalan sama ada ia mungkin untuk mendapatkannya semula menggunakan refleksi .
Sebelum Java 8, ia tidak boleh digunakan untuk mengakses nama parameter melalui refleksi. Walau bagaimanapun, dengan pengenalan pantulan parameter dalam Java 8, ia menjadi mungkin. Kod berikut menunjukkan cara untuk mendapatkan nama parameter:
import java.lang.reflect.Method; import java.lang.reflect.Parameter; public class ParameterReflection { public static void main(String[] args) { Class<?> clazz = Whatever.class; Method[] methods = clazz.getDeclaredMethods(); for (Method method : methods) { if (method.getName().equals("aMethod")) { Parameter[] parameters = method.getParameters(); for (Parameter parameter : parameters) { System.out.println(parameter.getName()); } break; } } } }
Dalam contoh ini, kelas Whatever mengandungi kaedah aMethod dengan parameter integer bernama aParam. Dengan menggunakan kaedah method.getParameters(), anda boleh mendapatkan tatasusunan objek Parameter yang mewakili setiap parameter kaedah, bersama-sama dengan nama mereka.
Ia penting untuk ambil perhatian bahawa Java 8 memerlukan mendayakan bendera pengkompil -parameters untuk menjadikan nama parameter boleh diakses semasa runtime. Dalam projek Maven, bendera ini boleh ditambahkan pada
<compilerArgument>-parameters</compilerArgument>
Sebagai alternatif, dalam Java 8 versi pengkompil yang lebih baharu daripada 3.6.2, anda boleh menetapkan parameter kepada benar dalam
<parameters>true</parameters>
Dengan pengenalan pantulan parameter dalam Java 8, mendapatkan nama parameter kaedah melalui pantulan kini boleh dilaksanakan. Dengan menggunakan kelas Parameter dan bendera pengkompil -parameters, anda boleh mengakses nama parameter pada masa jalan.
Atas ialah kandungan terperinci Bagaimanakah anda boleh mendapatkan semula nama parameter kaedah Java menggunakan refleksi dalam Java 8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!