답변
인터페이스는 기능적 인터페이스의 경우 자바 8에서는, 사용자가 방식 참조 통해 람다 식을 통해 또는 간단한 경우로 정의 할 수있다 (단 하나 개의 추상있어서, 아래 참조)
람다 :
Runnable runnable =() -> System.out.println("I am a runnable");
방법 참조 :
Predicate<Character> uppercase = Character::isUpperCase;
주 : 기능 인터페이스 필요하지 않은 재치를 주석 수 h @FunctionalInterface
이지만 인터페이스가 정확히 하나의 추상화가 아닌 경우 (default
, static
이 아닌 경우, @FunctionalInterface
) 주석 달기에는 컴파일 타임 오류가 발생합니다 (주석이 비슷한 방식으로 유용합니다 ~ @Override
).
참조 :
@FunctionalInterface
의 javadoc- Lambda expressions (자바 튜토리얼)
- Method references (자바 튜토리얼)
- Functional interfaces (Java 언어 사양)
- Method reference expressions (Java 언어 사양)
업데이트 응답 :
예, 정의하고 oneliner과 람다를 사용하지만, 상황이 불분명 경우 그 명시 적 캐스트가 필요 할 수 있습니다 다음에 따라
// cast required
System.out.println(((Predicate<Character>) Character::isUpperCase).test('A'));
// no cast required
Arrays.asList("foo","bar").forEach(System.out::println);
Arrays.asList(1,2).forEach(i -> System.out.println(i*2));
그냥 궁금해서 그 인스턴스의 반환을 한 줄로 반환 할 수 있습니까? –
함수형 인터페이스에는 하나의 ** abstract ** 메소드 만 있다고 말하는 것이 낫다. 왜냐하면'default' 메소드뿐만 아니라'static' 메소드도 있기 때문에 다른 타입의 무관 한 메소드에주의를 기울이지 않는다. Java 9는'private' 메소드를 허용합니다. 이것은'인터페이스'가 기능 인터페이스인지 아닌지에 대한 질문과 무관합니다. 좀 더 정확하기 위해서'java.lang.Object'에 선언 된 메소드와 정확히 일치하지 않는 하나의 추상 메소드를 가지고 있기 때문에 두 개의 추상 메소드를 가진'Comparator'는 여전히 기능 인터페이스입니다. – Holger
@fireflieslive : "한 줄에 그 인스턴스를 반환 할 수 있습니까?"라는 것이 명확하지 않습니다. – Holger
때때로 가능합니다. 예 :
List<T> list = ...
Collections.sort(list, (t1, t2) -> compareOperation(t1,t2));
functional interface Comparator<T>
하나만 추상적 방법을 포함하는 인터페이스이다. See docs.oracle
- 1. 한 라이너
- 2. 기본 클래스 인스턴스 메서드를 구현
- 3. IJulia 플롯 한 라이너
- 4. 는 경우 - 다른 한 라이너
- 5. 한 라이너 관찰 자바 스크립트
- 6. 펄 라이너 한 여러 광고를
- 7. wsdl2phpgenerator가 구현 한 클래스 사용
- 8. 하스켈 - 구현 및 인스턴스
- 9. 단일 인스턴스 로그인 구현
- 10. 클래스 구현 Java
- 11. 인스턴스 변수가 클래스
- 12. 인터페이스 유형의 인스턴스 변수에 구현 클래스 메소드에 대한 액세스 권한이 없습니다. 구현 클래스 유형의 인스턴스 변수와 마찬가지로
- 13. 헤더의 클래스 메서드 구현
- 14. 펄 한 줄 라이너 + 일치하는 IP 주소
- 15. 클래스 인스턴스
- 16. 고유 한 식별 번호를 사용하여 클래스 구현
- 17. customproperty 내가처럼 보이는 특성 클래스 구현 한
- 18. Android의 클래스 인스턴스 크기
- 19. 복귀 유도 클래스 인스턴스
- 20. 추상 클래스, 메서드 구현 구현
- 21. C#의 인스턴스 클래스 -> 정적 클래스 -> 인스턴스 클래스
- 22. 한 번에 한 클래스의 인스턴스
- 23. Django : 클래스 인스턴스 제한
- 24. 클래스 인스턴스 생성
- 25. 메서드 : 클래스 인스턴스 검색
- 26. 클래스 내부의 클래스 인스턴스 바꾸기
- 27. 클래스 내의 Mocking 클래스 인스턴스
- 28. 클래스 내의 클래스 인스턴스 초기화
- 29. 클래스 인스턴스 삭제
- 30. 온톨로지의 클래스/인스턴스
인터페이스 (기능적 인터페이스입니까?) 및 필요한 구현. – Eran
또한 회선의 길이에 따라 달라집니다. –
예. 한 라인이 보이는 것은 인터페이스의 복잡성에 달려 있습니다. – khelwood