2015-01-29 2 views
2
class Person { 
    public String name; 
    public String getName() { return name; } 
} 

스트림 API에서 람다를 통해 필드에 액세스하기위한 특수 구문 설탕이 있습니까? 나는 참조 :자바 스트림 API : getter 구문이없는지도 필드

List<Person> persons; 
persons.stream().map(Person::getName).collect(Collectors.toList()); 
persons.stream().map(p -> p.name).collect(Collectors.toList()); 

같은 것에 대해 (작동하지 않는, 내가 알고) 무엇 :

persons.stream().map(Person::name).collect(Collectors.toList()); 
+3

가능한 복제본 : [Java8 람다 참조] (http://stackoverflow.com/questions/27467946/java8-lambda-reference-to-a-field) – Lii

답변

3

는 필드 액세스에 대한 방법을 참조 같은 구문이 없습니다. 그것은 때때로 편리했을 때가 있었을 것입니다.

필드가 메소드로 간주되는 것은 Java에서 약간 이상하다는 점에서 정당성이 없다는 사실입니다. 또한 필드와 메소드가 같은 이름을 가질 수 있기 때문에 오버로드로 인해 어려움이 발생합니다.

해결 방법은 사용자가 입력 한 예와 같이 필드에 대한 getter를 제공하는 것입니다.