functional-interface
Java ์คํ์ ์ ์๋ ํจ์ํ ์ธํฐํ์ด์ค๋ผ๋ ๊ฒ์ ์๋ฆฌ๊ธฐ ์ํ ์ ๋ณด์ฑ ์ ๋ ธํ ์ด์ 
ํจ์ํ ์ธํฐํ์ด์ค ?
ํ๊ฐ์ ์ถ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง
default์ ์ธ๋ ๋ฉ์๋๋ ๊ตฌํ์ด ์์ผ๋ฏ๋ก ์ถ์ ๋ฉ์๋๊ฐ ์๋java.lang.Object์ ๊ณตํต ๋ฉ์๋(equals()..๋ฑ) ๋ฅผ ๋์ฒดํ๋ ์ถ์ ๋ฉ์๋๋, ํจ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ํ ์ถ์๋ฉ์๋๋ก ์ฌ๊ฒจ์ง์ง ์์.
@FunctionalInterface
public interface MyFunctionalInterface {
    void hello(); // ์ถ์ ๋ฉ์๋
}ํ๋์ ์ถ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋ ์ ์ ํ ํจ์ํ ์ธํฐํ์ด์ค
@FunctionalInterface // compile error -> No target method found
public interface MyFunctionalInterface {
    default void hello() {}
}
@FunctionalInterface // compile error -> No target method found
public interface MyFunctionalInterface<T> {
    boolean equals(Object obj);
}
default method๋ Object์ ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ ํ๋ ๊ฒฝ์ฐ ์ปดํ์ผ ์๋ฌ ๋ฐ์
@FunctionalInterface๋ก ์ ์ธ๋ ํ์ ์..interfaceํ์ ์ด์ด์ผํจ. annotation, enum, class ๋ฉด ์ฌ์ฉํ ์ ์์.
๊ทธ๋ ์ง๋ง
@FunctionalInterface์ด๋ ธํ ์ด์  ์ ์ธ๊ณผ ๋ฌด๊ดํ๊ฒ, ํจ์ํ ์ธํฐํ์ด์ค์ ์ ์ ์ฆ ํด๋น ์ธํฐํ์ด์ค๊ฐ ํ๋์ ์ถ์๋ฉ์๋๋ง ๊ฐ๋ ๋ค๋ฉด ์ปดํ์ผ๋ฌ๋ ํด๋น ์ธํฐํ์ด์ค๋ฅผ ํจ์ํ ์ธํฐํ์ด์ค๋ก ์ทจ๊ธํจ.
๋ํ์ ์ธ ํจ์ํ ์ธํฐํ์ด์ค
์ฐธ๊ณ 
https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/lang/FunctionalInterface.html
https://johngrib.github.io/wiki/java-functional-interface/
https://www.baeldung.com/java-8-functional-interfaces
Last updated
Was this helpful?