제목에서 알 수 있듯이 모든 프로그래밍 언어에서 getter 및 setter에 대한 토론이 항상 있었으며 Java에서도 마찬가지였습니다.Java 8 이후에 getter 및 setter를 사용하는 새로운 인수가 있습니까?
질문은 다음과 같습니다. 새로운 인수가 있습니까? Java 8이 출시 되었습니까?
기존 인수의 예는 getters 및 setters가 상태를 캡슐화하거나 API를 변경하지 않고 구현을 변경할 수 있다는 것입니다.
제목에서 알 수 있듯이 모든 프로그래밍 언어에서 getter 및 setter에 대한 토론이 항상 있었으며 Java에서도 마찬가지였습니다.Java 8 이후에 getter 및 setter를 사용하는 새로운 인수가 있습니까?
질문은 다음과 같습니다. 새로운 인수가 있습니까? Java 8이 출시 되었습니까?
기존 인수의 예는 getters 및 setters가 상태를 캡슐화하거나 API를 변경하지 않고 구현을 변경할 수 있다는 것입니다.
예, 있습니다! Java 8 메소드 참조가 소개되었으므로 이름에서 알 수 있듯이 메소드에서만 사용할 수 있습니다.
다음과 같은 코드를 생각해
class Person {
private String firstName;
private String lastName;
public Person(final String firstName, final String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
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;
}
@Override
public String toString() {
return firstName + " " + lastName;
}
}
우리가 만 할 수있는, 우리가 그들의 성을 기준으로 그룹화 사람들의 목록이 포함 된지도를 가져올 가정을 그 다음 코드와 방법 참조를 통해 : 출력합니다
List<Person> personList = new ArrayList<>();
personList.add(new Person("Shannon", "Goldstein"));
personList.add(new Person("Donnie", "Denney"));
personList.add(new Person("Mark", "Thomas"));
personList.add(new Person("Julia", "Thomas"));
Map<String, List<Person>> personMapping = personList.stream()
.collect(Collectors.groupingBy(Person::getLastName));
System.out.println("personMapping = " + personMapping);
는 잘 포맷 :
personMapping = {
Thomas=[Mark Thomas, Julia Thomas],
Goldstein=[Shannon Goldstein],
Denney=[Donnie Denney]
}
public
변수를 사용하면 이 아닌 변수가 사용됩니다. 메소드 참조를 얻을 수 없으며, 필요하지 않은 본격적인 람다 작성 이외의 다른 방법으로 참조 할 수 없습니다.
(호기심 사람들을 위해 : person -> person.lastName
가 사용 된해야합니다)
또한,이 대답은 주장하는 사람과 다른 것을 명심 그 객체가 특정 인터페이스를 준수 할 필요가있는 경우, 그 다음 getter 및 setter는 해야을 사용하십시오. 이 예제에서와 같이 Person
클래스는 인터페이스가 없어도 getter를 사용할 수있는 이점이 있습니다.
public class Customer {
private String email;
public void setEmail(String email) { this.email = email; }
public String getEmail() { return email; }
}
이것은 원래 질문을 다루지 않습니다. 이것은 Java에서 setter 및 getter의 표준 예제 일뿐입니다. –
+1 나는 항상 짧은 게터/세터'무효과 lastName (문자열과 lastName)'와'문자열이 lastName을 선호했다()'당신이 제안을 팝업 당신의 IDE를 설정하면 그들에게 매우 성가신 찾을 –
@PeterLawrey 입력 할 때'getXXX' 버전과 마찬가지로'g'를 입력하면 모든 getters의 목록을 즉시 얻을 수 있습니다. – skiwi
IDE에서 볼 수있는 필드 이름 옆에 가서()를 추가하십시오. 어쨌든 그것은 단지 스타일의 문제이며 나는 당신의 대답에 동의합니다. –