Refleksija parametra metode u Javi

1. Pregled

Podrška za refleksiju parametara metode dodana je u Javi 8. Jednostavno rečeno, pruža podršku za dobivanje imena parametara tijekom izvođenja.

U ovom ćemo brzom vodiču pogledati kako pristupiti imenima parametara za konstruktore i metode u vrijeme izvođenja - koristeći refleksiju.

2. Argument sastavljača

Da bismo mogli dobiti pristup informacijama o nazivu metode, moramo se izričito prijaviti.

Da bismo to učinili, mi navedite parametri opcija tijekom kompilacije.

Za Maven projekt, ovu mogućnost možemo prijaviti u pom.xml:

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

3. Primjer klase

Upotrijebit ćemo smišljeno Osoba klase s jednim svojstvom tzv puno ime demonstrirati:

javni razred Osoba {private String fullName; javna osoba (niz puno ime) {this.fullName = puno ime; } javna praznina setFullName (niz puno ime) {this.fullName = puno ime; } // ostale metode}

4. Upotreba

The Parametar Predavanje je novo u Javi 8 i ima niz zanimljivih metoda. Ako je -parametri pružena je opcija kompajlera, isNamePresent () metoda će vratiti true.

Da bismo pristupili imenu parametra, možemo jednostavno nazvati getName ():

@Test public void whenGetConstructorParams_thenOk () baca NoSuchMethodException, SecurityException {Parametri popisa = Arrays.asList (Person.class.getConstructor (String.class) .getParameters ()); Izborni parametar = parameters.stream (). Filter (Parameter :: isNamePresent) .findFirst (); assertThat (parameter.get (). getName ()). isEqualTo ("punoime"); } @Test public void whenGetMethodParams_thenOk () baca NoSuchMethodException, SecurityException {Parametri popisa = Arrays.asList (Person.class.getMethod ("setFullName", String.class) .getParameters ()); Izborni parametar = parameters.stream () .filter (Parameter :: isNamePresent) .findFirst (); assertThat (parameter.get (). getName ()). isEqualTo ("punoime"); }

5. Zaključak

U ovom smo kratkom članku pogledali novu podršku za refleksiju imena parametara koja su postala dostupna u Javi 8.

Najočitiji slučaj upotrebe ovih informacija je pomoć u implementaciji automatsko dovršavanja podrške unutar urednika.

Kao i uvijek, izvorni kod možete pronaći na Githubu.