04 : 메서드 레퍼런스메서드 레퍼런스 사용방식 다른 코드에 전달하려는 액션을 수행하는 메서드가 이미 존재할 수 도 있다. 예를 들면, 버튼을 클릭할때 마다 단순히 이벤트 객체를 출력하고 싶은 경우이다. 1button.setOnAction(event -> System.out.println(event)); 하지만 setOnAction 메서드에 println 메서드만 전달할 수 있다면 더 간편할 것이다. 1button.setOnAction(System.out::println); System.out::println 표현식은 x -> System.out.println(x)에 해당하는 메서드 레퍼런스 이다. :: 연산자를 이용해 객체 또는 클래스와 메서드 이름을 구분하며 사용한다. 1. object::instan..
03 : 함수형 인터페이스 함수형 인터페이스(Functional Interface) 람다 표현식은 단일 추상 메서드를 갖춘 인터페이스 객체에 사용 가능 하다. 이러한 인터페이스를 함수형 인터페이스(Functional Interface)라 한다. Arrays.sort 메서드를 고려해 보면 두 번째 파라미터는 단일 메서드를 갖춘 인터페이스인 Comparator의 인스턴스를 필요로 한다. 기존의 구현 방식은 다음과 같다. 1234567class ComparatorTest implements Comparator{ public int compare(String first , String second){ return Integer.compare(first.length(), second.length()); }} Ar..
02 : 람다 표현식 문법 람다 표현식 첫 번째 : 12(String first, String second) -> Integer.compare(first.length(), second.length()) 위의 코드 처럼 변수들의 타입이 정확히 명시된 형태이다. ("매개변수") -> { "함수의 몸통"} 인 구조로 이루어 진다. 이때 함수의 형태가 Anonymous function 형태임을 기억해 두자. 자바의 기존의 Anonymous class 와 유사 한 형태로 사용하면 될 것 같다. 람다 표현식 두 번째 : 람다 표현식이 파라미터를 받지 않으면, 기존 함수와 마찬가지로 파라미터가 없는 메서드처럼 빈 괄호를 사용한다. 1() -> { for(int i = 0 ; i Integer.compare(first..