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?