From 543c87fa7002f4bb4ebb953da5707884674cb680 Mon Sep 17 00:00:00 2001 From: Chris Oberle Date: Tue, 29 May 2018 09:35:09 -0400 Subject: [PATCH 1/2] initial import of source for BAEL-1786 --- core-java-8/pom.xml | 10 +++++ .../java/com/baeldung/reflect/Person.java | 42 +++++++++++++++++++ .../baeldung/reflect/MethodParamNameTest.java | 33 +++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 core-java-8/src/main/java/com/baeldung/reflect/Person.java create mode 100644 core-java-8/src/test/java/com/baeldung/reflect/MethodParamNameTest.java diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml index aab349781a..20db1e1146 100644 --- a/core-java-8/pom.xml +++ b/core-java-8/pom.xml @@ -195,6 +195,16 @@ + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + -parameters + + org.springframework.boot spring-boot-maven-plugin diff --git a/core-java-8/src/main/java/com/baeldung/reflect/Person.java b/core-java-8/src/main/java/com/baeldung/reflect/Person.java new file mode 100644 index 0000000000..b78536dc2c --- /dev/null +++ b/core-java-8/src/main/java/com/baeldung/reflect/Person.java @@ -0,0 +1,42 @@ +package com.baeldung.reflect; + +public class Person { + + private String firstName; + private String lastName; + private Integer age; + + public Person(String firstName, String lastName, Integer age) { + this.firstName = firstName; + this.lastName = lastName; + this.age = age; + } + + public Person() {} + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Integer getAge() { + return age; + } + + public void setAge(Integer age) { + this.age = age; + } + + +} diff --git a/core-java-8/src/test/java/com/baeldung/reflect/MethodParamNameTest.java b/core-java-8/src/test/java/com/baeldung/reflect/MethodParamNameTest.java new file mode 100644 index 0000000000..be72762c1d --- /dev/null +++ b/core-java-8/src/test/java/com/baeldung/reflect/MethodParamNameTest.java @@ -0,0 +1,33 @@ +package com.baeldung.reflect; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.lang.reflect.Parameter; +import java.util.Arrays; +import java.util.List; + +import static java.util.stream.Collectors.toList; +import org.junit.Test; + +public class MethodParamNameTest { + + @Test + public void whenGetConstructorParams_thenOk() throws NoSuchMethodException, SecurityException { + List parameters + = Arrays.asList( + Person.class.getConstructor(String.class, String.class, Integer.class) + .getParameters()); + List parameterNames + = parameters.stream().map(Parameter::getName).collect(toList()); + assertThat(parameterNames) + .containsExactlyInAnyOrder("lastName", "firstName", "age"); + } + + @Test + public void whenGetMethodParams_thenOk() throws NoSuchMethodException, SecurityException { + List parameters + = Arrays.asList( + Person.class.getMethod("setLastName", String.class).getParameters()); + assertThat(parameters.get(0).getName()).isEqualTo("lastName"); + } +} From d683b370f6e579b7873589093299e1769a21164d Mon Sep 17 00:00:00 2001 From: Chris Oberle Date: Wed, 30 May 2018 07:40:26 -0400 Subject: [PATCH 2/2] refactor example --- .../java/com/baeldung/reflect/Person.java | 38 ++++--------------- .../baeldung/reflect/MethodParamNameTest.java | 25 ++++++------ 2 files changed, 20 insertions(+), 43 deletions(-) diff --git a/core-java-8/src/main/java/com/baeldung/reflect/Person.java b/core-java-8/src/main/java/com/baeldung/reflect/Person.java index b78536dc2c..fba25aca8b 100644 --- a/core-java-8/src/main/java/com/baeldung/reflect/Person.java +++ b/core-java-8/src/main/java/com/baeldung/reflect/Person.java @@ -2,41 +2,17 @@ package com.baeldung.reflect; public class Person { - private String firstName; - private String lastName; - private Integer age; + private String fullName; - public Person(String firstName, String lastName, Integer age) { - this.firstName = firstName; - this.lastName = lastName; - this.age = age; + public Person(String fullName) { + this.fullName = fullName; } - public Person() {} - - public String getFirstName() { - return firstName; + public void setFullName(String fullName) { + this.fullName = fullName; } - public void setFirstName(String firstName) { - this.firstName = firstName; + public String getFullName() { + return fullName; } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public Integer getAge() { - return age; - } - - public void setAge(Integer age) { - this.age = age; - } - - } diff --git a/core-java-8/src/test/java/com/baeldung/reflect/MethodParamNameTest.java b/core-java-8/src/test/java/com/baeldung/reflect/MethodParamNameTest.java index be72762c1d..46c833cfb1 100644 --- a/core-java-8/src/test/java/com/baeldung/reflect/MethodParamNameTest.java +++ b/core-java-8/src/test/java/com/baeldung/reflect/MethodParamNameTest.java @@ -5,29 +5,30 @@ import static org.assertj.core.api.Assertions.assertThat; import java.lang.reflect.Parameter; import java.util.Arrays; import java.util.List; +import java.util.Optional; -import static java.util.stream.Collectors.toList; import org.junit.Test; public class MethodParamNameTest { @Test - public void whenGetConstructorParams_thenOk() throws NoSuchMethodException, SecurityException { + public void whenGetConstructorParams_thenOk() + throws NoSuchMethodException, SecurityException { List parameters - = Arrays.asList( - Person.class.getConstructor(String.class, String.class, Integer.class) - .getParameters()); - List parameterNames - = parameters.stream().map(Parameter::getName).collect(toList()); - assertThat(parameterNames) - .containsExactlyInAnyOrder("lastName", "firstName", "age"); + = 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 { + public void whenGetMethodParams_thenOk() + throws NoSuchMethodException, SecurityException { List parameters = Arrays.asList( - Person.class.getMethod("setLastName", String.class).getParameters()); - assertThat(parameters.get(0).getName()).isEqualTo("lastName"); + Person.class.getMethod("setFullName", String.class).getParameters()); + Optional parameter + = parameters.stream().filter(Parameter::isNamePresent).findFirst(); + assertThat(parameter.get().getName()).isEqualTo("fullName"); } }