@FunctionalInteface에 대하여

 

자바는 메소드를 단독으로 선언할 수 없고 항상 클래스의 구성 멤버로 선언하기 때문에

람다식을 단순히 메소드를 선언하는 것이 아니라

이 메소드를 가지고 있는 객체를 생성해 낸다.

 

그러므로 람다식은 본인의 식을 만들어낼 객체가 필요하다

인터페이스 변수 = 람다식;

처럼 선언하면 람다식은 인터페이스 변수에 대입된다.

이 말은 람다식은 인터페이스의 익명 구현 객체를 생성한다는 뜻이 된다.

 

인터페이스는 직접 객체화할 수 없기 때문에 구현 클래스가 필요한데,

람다식은 익명 구현 클래스를 생성하고 객체화한다.

 

 

 

이런식으로 람다를 이용해 인터페이스에 함수를 참조시킬수 있게 된다.

 

@FunctionalInterface를 사용하면 추상 메소가 두개 이상이 되지 않게끔 체크해준다.

 

 

매개변수가 있는 경우에는 다음처럼 된다.

 

 

 

리턴값이 있는 경우에는 다음과 같다

여기서 void말고 int로 바꿔주는 것이 포인트

 

 

 

x+y에 값이 대입되어 값이 잘 출력된다.

 

 

이렇게 인터페이스를 만들고 거기에 자기가 메소드를 커스터마이징해서 사용한다는 점을 포인트로 삼아서 사용하는 것이 중요한것 같다

+ Recent posts