//MyConsumer.java @FunctionalInterface public interface MyConsumer { void consume(T t); } //MyMapper.java @FunctionalInterface public interface MyMapper { OUT map(IN s); } //MySupplier.java @FunctionalInterface public interface MySupplier { T supply(); } //Main.java public class Main { public static void main(String[] args) { MySupplier s = () -> "Hello World!"; MyMapper m = String::length; //제네..
추상메소드가 하나만 존재하는 인터페이스를 함수형 인터페이스 라고 한다. defualt method, static method 가 있어도 괜찮다. (default / static method는 추상 메소드가 아니다) 추상메소드가 하나만 존재할 때 @FunctionalInterface 어노테이션을 달아준다. FunctionalInterface에 있는 추상메소드를 함수 라고 부른다. //Main.java @FunctionalInterface public interface MyRunnable { void run(); } @FunctionalInterface public interface MyMap { void map(); default void sayHello() { System.out.println("Hell..
Java 8 이상부터 큰 기능 개선이 있었다. 그 중 하나는 인터페이스가 구현체를 가질 수 있게 된 것이다. 바로 Interface의 Default Method 기능이다. 인터페이스에 들어있는 구현 메서드를 클래스에서 바로 사용할 수 있다. 물론 오버라이드 해서 다른 기능을 하게 할 수도 있다. //Main.java interface MyInterface { void method(); //추상 메서드 (구현이 없다) default void sayHello() { //interface가 default 키워드를 사용하면 구현 메서드를 가질 수 있다. System.out.println("Hello World"); } } public class Main implements Myinterface { public ..
1. Interface의 기능 구현부가 없어서 인터페이스를 구현한 클래스에서 구현을 강제한다. Interface에 정의되어 있는 메소드들을 구현하지 않으면 에러가 난다. 다형성을 제공한다. // Login.java public interface Login { void login(); } // KakaoLogin.java public class KakaoLogin implements Login { @Override public void login() { System.out.println("카카오로 로그인 합니다."); } } // NaverLogin.java public class NaverLogin implements Login { @Override public void login() { System.o..