Metode Parameter Refleksi di Jawa

1. Ikhtisar

Metode Dukungan Parameter Refleksi telah ditambahkan di Java 8. Sederhananya, ini menyediakan dukungan untuk mendapatkan nama parameter pada saat runtime.

Dalam tutorial singkat ini, kita akan melihat cara mengakses nama parameter untuk konstruktor dan metode pada waktu proses - menggunakan refleksi.

2. Argumen Penyusun

Untuk mendapatkan akses ke informasi nama metode, kita harus ikut serta secara eksplisit.

Untuk melakukan ini, kami menetapkan opsi parameter selama kompilasi .

Untuk proyek Maven, kita dapat mendeklarasikan opsi ini di pom.xml :

 org.apache.maven.plugins maven-compiler-plugin 3.1  1.8 1.8 -parameters   

3. Kelas Contoh

Kita akan menggunakan kelas Person yang dibuat-buat dengan satu properti bernama fullName untuk mendemonstrasikan:

public class Person { private String fullName; public Person(String fullName) { this.fullName = fullName; } public void setFullName(String fullName) { this.fullName = fullName; } // other methods }

4. Penggunaan

Kelas Parameter baru di Java 8 dan memiliki berbagai metode menarik. Jika -parameters opsi kompiler diberikan, isNamePresent () metode akan kembali benar.

Untuk mengakses nama parameter, kita cukup memanggil getName () :

@Test public void whenGetConstructorParams_thenOk() throws NoSuchMethodException, SecurityException { List parameters = Arrays.asList(Person.class.getConstructor(String.class).getParameters()); Optional parameter = parameters.stream().filter(Parameter::isNamePresent).findFirst(); assertThat(parameter.get().getName()).isEqualTo("fullName"); } @Test public void whenGetMethodParams_thenOk() throws NoSuchMethodException, SecurityException { List parameters = Arrays.asList( Person.class.getMethod("setFullName", String.class).getParameters()); Optional parameter= parameters.stream() .filter(Parameter::isNamePresent) .findFirst(); assertThat(parameter.get().getName()).isEqualTo("fullName"); }

5. Kesimpulan

Dalam artikel singkat ini, kami melihat dukungan refleksi baru untuk nama parameter yang tersedia di Java 8.

Kasus penggunaan yang paling jelas untuk informasi ini adalah membantu menerapkan dukungan pelengkapan otomatis dalam editor.

Seperti biasa, kode sumber dapat ditemukan di Github.