Javaμμ ν¨μν μΈν°νμ΄μ€λ
λ¨μΌ μΆμ λ©μλ(Single Abstract Method, SAM)λ₯Ό κ°μ§ μΈν°νμ΄μ€λ€.
Java 8 μ΄μμμλ λλ€ ννμ λ° ν¨μν μΈν°νμ΄μ€λ₯Ό μ§μνλ€.
ν¨μν μΈν°νμ΄μ€μ μΆμ λ©μλ μκ·Έλμ²λ λλ€ ννμκ³Ό μ°κ΄μ΄ μλ€.
(μΆμ λ©μλ μκ·Έλμ²λ ν΄λΉ ν¨μν μΈν°νμ΄μ€κ° λνλ΄λ ν¨μμ ννλ₯Ό κ²°μ νλ κ²)
java.util.function
ν¨ν€μ§μλ λ€μν ν¨μν μΈν°νμ΄μ€κ° ν¬ν¨λμ΄ μμ.
Consumer
μΈν°νμ΄μ€μ μΆμ λ©μλλ λ€μκ³Ό κ°λ€.
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
μ¬κΈ°μ accept
κ° μΆμ λ©μλμ΄λ€.
μ΄ λ©μλλ νλμ 맀κ°λ³μλ₯Ό λ°κ³ λ°νκ°μ΄ μμΈ°. (ν¨μν μΈν°νμ΄μ€)
μ΄λ κ² μ μλ μΈν°νμ΄μ€λ λλ€ ννμμΌλ‘ ννν μ μλ€.
@FunctionalInterface
μ΄λ
Έν
μ΄μ
ν΄λΉ μΈν°νμ΄μ€κ° ν¨μν μΈν°νμ΄μ€μμ λνλ΄λ©°, μ»΄νμΌλ¬κ° μ΄ κ·μΉμ 체ν¬νλλ‘ ν¨.
ν¨μν μΈν°νμ΄μ€μ μΆμ λ©μλ μκ·Έλμ²λ₯Ό μλ©΄
κ·Έ μΈν°νμ΄μ€λ₯Ό λλ€ ννμμΌλ‘ ννν λ
νμν 맀κ°λ³μ νμ λ° λ°ν νμ μ μ΄ν΄ν μ μμ.
ν¨μν νλ‘κ·Έλλ°μμλ ν¨μλ₯Ό κ°μΌλ‘ μ·¨κΈνκ³ , μ΄λ¬ν κ°μ ν΄λΉ ν¨μμ μκ·Έλμ²μ λ°λΌ λμνλ€λ₯.
@FunctionvalInterface μ΄λ Έν μ΄μ μ λν΄ μλ° κ³΅μ λ¬Έμ λ΄μ©μ μ’ λ λ€λ€λ³΄κ² λ€.
Conceptually, a functional interface has exactly one abstract method. Since default methods have an implementation, they are not abstract. If an interface declares an abstract method overriding one of the public methods of java.lang.Object, that also does not count toward the interface's abstract method count since any implementation of the interface will have an implementation from java.lang.Object or elsewhere.
ν΅μ¬μ ν¨μν μΈν°νμ΄μ€λ λ¨ νλμ μΆμ λ©μλλ§ κ°μ ΈμΌ νλ€.
μ¦, κΈ°λ³Έ λ©μλλ μ€λ²λΌμ΄λ©ν κ²μ ν¬ν¨νμ¬ ν¨μν μΈν°νμ΄μ€ λ΄μμ μ¬μ©μ΄ κ°λ₯νλ€.
κ·Έλ¦¬κ³ java.lang.Objectμ ꡬνλ λ€λ₯Έ μΈν°νμ΄μ€λ μ¬μ© κ°λ₯νλ€.
μλλ©΄, μ΄λκ°μλ ꡬνλμ΄ μκΈ° λλ¬Έμ΄μμ΄~
'π Java&Spring' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
NonNull μ¬λ...μ¬...μ¬...λ... κ·Έλ₯ μ’μν©λλ€. (3) | 2023.11.07 |
---|---|
Intellij) JUnit5 μ€μ ν μ¬λ κ΄ (0) | 2023.07.27 |
Error) java: class, interface, or enum expected ν΄κ²° (0) | 2023.06.26 |
πΈ startsWith()/endWith() λ¬Έμμ΄μ μμκ³Ό λ (0) | 2023.04.04 |
@JsonPropertyμ @JsonNaming (0) | 2023.03.17 |