익명 함수 지칭 (두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 변환)
장점 :
코드 간결성
자연연산 수행
병렬처리 가능
단점 :
람다식의 호출이 까다로움
람다 stream 사용 시 단순 for문 혹은 while문 사용 시 성능이 떨어짐
불필요하게 너무 사용되면 가독성 저하
람다는 매개변수 화살표(->) 함수몸체로 이용하여 사용 할 수 있다.
함수몸체가 단일 실행문이면 괄호{}를 생략 할 수 있다.
함수몸체가 return문으로만 구성되어 있는 경우 괄호{}를 생략 할 수 없다.
Reflection & Dynamic Proxy
프록시는 타겟 코드의 수정없이 접근제어 혹은 부가기능을 추가하기 위해 주로 사용된다. 하지만 프록시를 사용하기 위해서는 대상 클래스 수만큼의 프록시클래스를 하나하나 만들어줘야하고 그 안에 들어가는 반복되는 코드 때문에 코드중복이라는 단점이 있다. 이를 보완하여 컴파일 시점이 아닌 런타임 시점에 프록시 클래스를 만들어주는 방식이
Dynamic Proxy
Dynamic Proxy란? Proxy 객체를 직접 생성이 아닌 Runtime에 interface를 구현하는 Class or 인스턴스를 만들어 내는 것
Proxy 객체 정의하기 위한 Class Loader를 지정(객체가 구현할 interface에 Class Loader를 얻어오는 것이 일반적)
newProxyInstance()를 통해 생성 될 Proxy 객체가 구현할 interface를 정의
메소드 호출을 디스패치하기 위한 호출 핸들러.(디스패치: 어떤 메소드를 호출할 것인가를 결정하여 그것을 실행하는 과정을 이야기함)