300x250
✍️인터페이스 default 메서드 default 메서드 예제 자바 8부터 인터페이스에 default 메서드와 static 메서드가 추가됐다. public interface Foo { void printName(); } public class DefaultFoo implements Foo { String name; @Override public void printName() { System.out.println(name); } } 여러 클래스에서 Foo를 구현했다고 가정하고, 어느 날 Foo를 구현한 클래스에 공통적으로 제공할 기능이 추가됐으면 좋겠다 생각이 들어 Foo에 추상 메서드를 추가했다. public interface Foo { void printName(); void printNameUpper..
✍️ 메서드 레퍼런스 만약 람다 표현식이 하는 일이 기존에 있는 메서드 또는 생성자를 호출하는 거라면, 메서드 레퍼런스를 사용해서 매우 간결하게 표현할 수 있다. 참조하려는 메서드의 형태에 따라 그 방식이 서로 다르다. 스태틱 메서드의 참조 방식 타입::스태틱 메서드 특정 객체의 인스턴스 메서드 참조 방식 객체 레퍼런스::인스턴스 메서드 생성자 참조 방식 타입::new 임의 객체의 인스턴스 메서드 참조 방식 타입::인스턴스 메서드 🍊 메서드 레퍼런스 예제 Person 클래스엔 서로 다른 형태의 메서드들이 존재한다. 인자가 없는 생성자, 인자를 하나 받는 생성자, non-static public 메서드, static 메서드 public class Person { private String name; // ..
✍️ 람다 표현식 Function plus10 = (input) -> { return input + 10; }; 람다 표현식 (인자 리스트) -> {바디} 인자 리스트 인자가 없을 때 : () 괄호 생략 불가 인자가 한 개 : (input) 또는 input 인자가 여러 개 : (a, b) 인자의 타입은 생략 가능, 컴파일러가 추론하지만 명시할 수 있다 : (Integer a, Integer b) 바디 화살표 오른쪽에 메서드 본문을 정의한다. 여러 줄인 경우 {}를 사용해서 묶어야 한다. 한 줄인 경우 {} 생략 가능, return도 생략 가능 Function plus10 = (input) -> { return input + 10; }; Function plus20 = (input) -> input + 2..
✍️ Java에서 제공하는 함수형 인터페이스 public interface RunSomething { abstract void doIt(); // abstract 키워드 생략 가능 } 함수형 인터페이스를 직접 정의하지 않아도 Java에서 기본으로 제공하는 함수형 인터페이스가 있다. Java가 제공하는 함수형 인터페이스는 java.util.function 패키지에 포함되어 있다. Function 가장 대표적인 Function 함수형 인터페이스를 살펴보면, 입력이 하나 있고 반환값이 있는 추상 메서드를 하나 가지고 있다. Interface Function : Represents a function that accepts one argument and produces a result. Type Paramete..
✍️ 함수형 인터페이스 함수형 인터페이스란? 추상 메서드를 딱 하나만 가지고 있는 인터페이스 혹은 @Functionalinterface 어노테이션을 가지고 있는 인터페이스 public interface RunSomething { abstract void doIt(); // abstract 키워드는 빼도 됨 } 참고로, Java8부턴 인터페이스임에도 불구하고 static 메서드와 default 메서드를 추가할 수 있다. 중요한 점은 static 메서드와 default 메서드가 있더라도 추상 메서드가 하나만 존재하면 함수형 인터페이스이다. public interface RunSomething { abstract void doIt(); //public 생략가능 public static void printSta..