Módszer Paraméter Reflection Java-ban

1. Áttekintés

A Method Parameter Reflection támogatás a Java 8-ban lett hozzáadva. Egyszerűen fogalmazva, támogatást nyújt a paraméterek nevének futás közbeni megszerzéséhez.

Ebben a gyors bemutatóban megvizsgáljuk, hogyan lehet futás közben hozzáférni a konstruktorok és metódusok paraméterneveihez - a reflexió segítségével.

2. Fordítói érv

Annak érdekében, hogy hozzáférhessünk a módszer nevéhez, kifejezetten engedélyeznünk kell.

Ehhez mi adja meg a paraméterek opció az összeállítás során.

Maven projekt esetén ezt a lehetőséget deklarálhatjuk a pom.xml:

 org.apache.maven.plugins maven-compiler-plugin 3.1 1.8 1.8 -paraméterek 

3. Példa osztály

Kitaláltat fogunk használni Személy osztály egyetlen tulajdonsággal hívják teljes név demonstrálni:

public class Személy {private String teljesNév; public Person (String fullName) {ez.teljesNév = teljesNév; } public void setFullName (karakterlánc teljes neve) {this.fullName = teljesNév; } // egyéb módszerek}

4. Használat

A Paraméter osztály új a Java 8-ban, és számos érdekes módszerrel rendelkezik. Ha a -paraméterek fordító opciót biztosított, a isNamePresent () A módszer igaz lesz.

Egy paraméter nevének eléréséhez egyszerűen felhívhatjuk getName ():

@Test public void, amikor aGetConstructorParams_thenOk () NoSuchMethodException, SecurityException {List parameters = Arrays.asList (Person.class.getConstructor (String.class) .getParameters ()); Opcionális paraméter = paraméterek.stream (). Szűrő (Paraméter :: isNamePresent) .findFirst (); assertThat (paraméter.get (). getName ()). isEqualTo ("teljesNév"); } @Test public void, amikor aGetMethodParams_thenOk () NoSuchMethodException, SecurityException {List parameters = Arrays.asList (Person.class.getMethod ("setFullName", String.class) .getParameters ()) dob; Opcionális paraméter = parameters.stream () .filter (Parameter :: isNamePresent) .findFirst (); assertThat (paraméter.get (). getName ()). isEqualTo ("teljesNév"); }

5. Következtetés

Ebben a gyors cikkben megvizsgáltuk a Java 8-ban elérhetővé vált paraméternevek új reflexiós támogatását.

Ennek az információnak a legkézenfekvőbb felhasználási módja az automatikus kiegészítés támogatásának megvalósítása a szerkesztőkön belül.

Mint mindig, a forráskód megtalálható a Githubon.


$config[zx-auto] not found$config[zx-overlay] not found