Kaedah Pantulan Parameter di Jawa

1. Gambaran keseluruhan

Metode Dukungan Parameter Reflection ditambahkan di Java 8. Secara sederhana, ia memberikan sokongan untuk mendapatkan nama parameter pada waktu runtime.

Dalam tutorial ringkas ini, kita akan melihat cara mengakses nama parameter untuk pembina dan kaedah pada waktu runtime - menggunakan refleksi.

2. Argumen Penyusun

Untuk dapat mengakses maklumat nama kaedah, kita mesti memilih secara jelas.

Untuk melakukan ini, kami menentukan pilihan parameter semasa penyusunan .

Untuk projek Maven, kita boleh menyatakan pilihan ini di pom.xml :

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

3. Kelas Contoh

Kami akan menggunakan kelas Orang yang dibuat dengan satu harta tanah yang disebut nama penuh untuk menunjukkan:

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

The Parameter kelas yang baru dalam Java 8 dan mempunyai pelbagai kaedah yang menarik. Sekiranya pilihan penyusun -parameter diberikan, kaedah isNamePresent () 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 ringkas ini, kami melihat dukungan refleksi baru untuk nama parameter yang tersedia di Java 8.

Kes penggunaan yang paling jelas untuk maklumat ini adalah untuk membantu melaksanakan sokongan lengkap secara automatik dalam editor.

Seperti biasa, kod sumber boleh didapati di Github.