관리 메뉴

제뉴어리의 모든것

함수형 인터페이스에 대해 새롭게 알게된 사실 본문

JAVA

함수형 인터페이스에 대해 새롭게 알게된 사실

제뉴어리맨 2022. 10. 12. 16:46

@FunctionalInterface 이 붙은 인터페이스인

함수형 인터페이스에 대해 새롭게 알게 된 사실이 있다.

물론 @FunctionalInterface 이 안 붙어도 함수형 인터페이스의 조건은 만족한다.

명시적으로 알려서 혹여나 할 수 있는 실수를 방지하기 위함이다.

 

 

함수형 인터페이스는 

단순히 람다를 사용하기 위해

단 하나의 추상 메소드만 가지고 있는 인터페이스로만 알고 있었다.

 

아래의 Comparator 인터페이스의 소스를 보던 중

@FunctionalInterface
public interface Comparator<T> {

:
:
:
}

 

추상 메소드 한개만 정의된것이 아니라..

다양한 메소드가 존재했다.

그리고 명시적으로 @FunctionalInterface 가 쓰였음에도 문제가 없었고..

 

이유는

default 메소드와, static 메소드는 함수형 인터페이스에 몇개가 있든 상관이 없었다..

그리고 

Object 클래스가 가지고 있는 

equals(Object), hashCode() 같은 메소드 또한 Object에 이미 정의가 되어 있으므로 들어가도 상관이 없다고 한다..

 

위에 사항들을 인지하고 내부 코드들을 해석하도록 하자.

 

그런데 내가 알기로는 interface는 class와 달리 최고 조상같은 개념이 없다고 알고있는데.. 어떻게가능한거지?

 

 

 

 

참조 : https://www.scaler.com/topics/functional-interface-in-java/

 

Functional Interface in Java - Scaler Topics

Functional interface contains exactly one abstract method. In this article by Scaler Topics, find functional interface syntax, usage, examples, and much more.

www.scaler.com

https://stackoverflow.com/questions/51966837/equalsobject-and-functional-interfaces

 

equals(Object) and functional interfaces

According to Java Language Specification (version 8.0), “interfaces do not inherit from Object, but rather implicitly declare many of the same methods as Object.” If you provide an abstract method ...

stackoverflow.com