3

Java 7에서 실행 및 컴파일해야하는 라이브러리 코드를 작성 중이므로 Java 8에서 새로운 람다 기능을 직접 사용할 수 없습니다.Java 7 라이브러리 코드를 작성하여 Java 8 lambda로 작업하십시오.

난 여전히 코드와 같은 예를 들어 자바 (8)와 함께 사용하는 것이 편리 할 것입니다 그러나 :

  • 내부 클래스 /을 vistor 스타일의 패턴은 자바 8 사용자가 람다로 사용할 수 있다면 도움이 될 것입니다
  • 나는 람다 내가 자바 7 자바 내 라이브러리의 8 사용자 모두를위한 최고의 환경을 보장하기 위해 적용해야합니까 관행

과 사용 편리 API를 제공하고 싶습니다?

+0

lamda는 클라이언트 측으로만 존재합니다. 즉, 소비하는 방법은 lambda none을 넘겨주고 있다는 것을 모릅니다. 평상시처럼 코드를 작성하십시오. 여러분은 다른 방법보다 더 많은 단일 메소드 인터페이스를 시도해보아야 만합니다. 즉, 두 가지 작업을 수행하는 단일 매개 변수가 아닌 두 개의 SMI 인 두 매개 변수를 요구합니다.하지만 Java 7 사용자의 코드도 오염시킬 수 있습니다. –

답변

1

람다 식은 단일 메서드 인터페이스를 기반으로합니다. 단일 메소드 인터페이스의 구현이 사용되는 곳 (예를 들어 하나의 메소드가있는 인터페이스를 구현하는 익명의 내부 클래스)이있는 곳에서는 Java 8 사용자가 람다 식을 대신 사용할 수 있습니다.

Java 8에서 컬렉션 클래스가 어떻게 수정되었는지 살펴 보겠습니다. 예를 들어 forEach 메서드는 Iterable에 추가되었습니다. 이러한 메소드는 각각 단일 메소드 인터페이스를 인수로 사용합니다. 당신은 또한 기존의 스타일을 지원하는 방법을 제공 할 수 있습니다, 8 사용자 - 자바를 사전에 라이브러리가 사용 가능한하려면

:

은 보라 컬렉션을 반복하는 것; 그 사용자가 많은 익명의 내부 클래스를 사용하도록 강요하지 마십시오.

+2

"단일 메소드 인터페이스의 구현이 사용되는 모든 곳 ..."* 어디서나 *가 아닙니다. 람다로 바꿀 수없는 것들이 있습니다. 예 : 인스턴스 변수를 사용하는 익명 클래스, 재귀 적으로 호출하는 메서드가있는 익명 클래스, 코드에서'this'를 사용하는 익명 클래스 및 익명 클래스 객체의 ID 구분이 중요한 익명 클래스 등이 있습니다. – newacct

관련 문제