아무것도 취하지 않고 아무것도 반환하지 않는 메소드에 대한 Java 8 기능 인터페이스는 무엇입니까?
즉, C #을 매개 변수가에에 동등 Action
와 void
리턴 타입?
답변
내가 올바르게 이해하면 메소드와 기능적 인터페이스를 원합니다 void m()
. 어떤 경우에는 간단히 Runnable
.
답변
당신 만의
@FunctionalInterface
public interface Procedure {
void run();
default Procedure andThen(Procedure after){
return () -> {
this.run();
after.run();
};
}
default Procedure compose(Procedure before){
return () -> {
before.run();
this.run();
};
}
}
이렇게 사용하세요
public static void main(String[] args){
Procedure procedure1 = () -> System.out.print("Hello");
Procedure procedure2 = () -> System.out.print("World");
procedure1.andThen(procedure2).run();
System.out.println();
procedure1.compose(procedure2).run();
}
및 출력
HelloWorld
WorldHello
답변
@FunctionalInterface는 메서드 추상 메서드 만 허용하므로 아래와 같이 람다 식으로 해당 인터페이스를 인스턴스화 할 수 있으며 인터페이스 멤버에 액세스 할 수 있습니다.
@FunctionalInterface
interface Hai {
void m2();
static void m1() {
System.out.println("i m1 method:::");
}
default void log(String str) {
System.out.println("i am log method:::" + str);
}
}
public class Hello {
public static void main(String[] args) {
Hai hai = () -> {};
hai.log("lets do it.");
Hai.m1();
}
}
output:
i am log method:::lets do it.
i m1 method:::