2016-08-03 7 views
0

나는 java8로 변환하려고하는 java7 프로젝트를 가지고있다.자바 8에서 기능 인터페이스를 사용할 때

나는 아래 코드를 Java 8로 변환 한 코드를 가지고 있습니다.

JAVA 7 :

Long id=10; 
Student student= Student.findById(id); 

JAVA

Long id=10; 
Function<Long,Student> f=Student::findById; 
f.apply(id); 

지금 내 질문에이 방법을 변환 할 수있는 이해가되지 않습니다 8 JAVA 8에 다음과 같이 요구한다.

그래서 자바 7 JAVA 8에 위의 코드의 차이 무엇입니까 경우

사람이 명확히 주시겠습니까 ???

+2

각각의 모든 행을 새로운 Java 8 기능으로 변환하는 것은 바람직하지 않습니다. 때로는 오래된 코드를 엉망으로 만들 수도 있습니다. –

답변

2

Java 7 예제에서는 2 행에서 findById()를 호출하고 결과를 student에 지정합니다. Java 8 코드에서 메소드 참조를 사용하여 f의 findById() 메소드에 대한 참조를 저장하고 3 행에서 해당 메소드를 호출하십시오. 메소드 참조는 메소드 호출을 지연시킬 수있는 기능을 제공합니다. Streams와 함께 사용하면 을이 방법으로 얻을 수 있습니다.

예를 들어 메서드 참조는 이점을주지 않으므로 사용하지 않는 것이 좋습니다. 메서드 참조를 다른 함수에 전달하거나 호출을 지연하려면 메서드 참조를 사용하는 것이 좋습니다. 그렇지 않으면 명시 적 적용 호출로 코드를 혼란스럽게 만합니다.

예제가있는 Java 8 소개를 살펴 보는 것이 좋습니다. 나는 책 Functional Programming in Java을 읽고 그것을 단지 추천 할 수있다.

+0

도움을 주셔서 감사합니다! – Prakash