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.