Reflexia parametrov metódy v Jave

1. Prehľad

V Java 8 bola pridaná podpora pre odraz parametrov metódy. Jednoducho povedané, poskytuje podporu pri získavaní názvov parametrov za behu.

V tomto rýchlom výučbe sa pozrieme na to, ako získať prístup k názvom parametrov pre konštruktory a metódy za behu - pomocou reflexie.

2. Argument kompilátora

Aby sme mohli získať prístup k informáciám o názve metódy, musíme sa výslovne prihlásiť.

Aby sme to dosiahli, my uveďte parametre možnosť počas kompilácie.

Pre projekt Maven môžeme túto možnosť deklarovať v pom.xml:

 org.apache.maven.plugins maven-compiler-plugin 3.1 1,8 1,8 -parametre 

3. Ukážka triedy

Použijeme vykonštruovaný Osoba triedy s jedinou vlastnosťou tzv celé meno demonštrovať:

verejná trieda Osoba {private String fullName; verejná osoba (reťazec fullName) {this.fullName = fullName; } public void setFullName (reťazec fullName) {this.fullName = fullName; } // ďalšie metódy}

4. Použitie

The Parameter trieda je v Jave 8 nová a má množstvo zaujímavých metód. Ak -parametre bola poskytnutá možnosť kompilátora, isNamePresent () metóda vráti hodnotu true.

Na prístup k názvu parametra môžeme jednoducho zavolať getName ():

@Test public void whenGetConstructorParams_thenOk () hodí NoSuchMethodException, SecurityException {List parameters = Arrays.asList (Person.class.getConstructor (String.class) .getParameters ()); Voliteľný 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 ()); Voliteľný parameter = parameters.stream () .filter (Parameter :: isNamePresent) .findFirst (); assertThat (parameter.get (). getName ()). isEqualTo ("fullName"); }

5. Záver

V tomto rýchlom článku sme sa zaoberali novou podporou reflexie pre názvy parametrov, ktorá bola sprístupnená v prostredí Java 8.

Najzrejmejším prípadom použitia týchto informácií je pomoc pri implementácii podpory automatického dokončovania v editoroch.

Ako vždy, zdrojový kód nájdete na Githube.


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