전체 글 (60) 썸네일형 리스트형 람다(lambda) 표현식 이 글을 읽기 전에 이 글을 먼저 읽고 오시는 걸 권장 합니다. (함수형 인터페이스) https://threeo.tistory.com/43 람다식을 사용할 때, 타입은 생략을 할 수 있음. 1. 변수 캡쳐 effective final → (사실상 파이널) 자바 8부터 final을 안쓰고 로컬 클래스, 익명클래스, 람다 모두에서 변수를 가져와 쓸 수 있다. 로컬 클래스, 익명클래스, 람다 의 차이점 → 로컬, 익명 클래스는 *shadowing 이 가능 하지만, *shadowing : 밖에 있는 변수명과 같은 변수가 있다면 안쪽 로컬 변수를 캐치 why? : 스코프(scope)가 다르기 때문에 → 반면에 람다는 자신을 감싸고 있는 스코프(scope)와 같다고 인식한다. *shadowing이 일어나지 않음. .. 함수형 인터페이스(@FunctionalInterface) 함수형 인터페이스란 추상메소드가 단 하나만 있는 인터페이스다. 자바 8 부터는 default나, public 메소드가 있어도 상관 없으며, 오로지 추상메소드가 하나만 있으면 된다. 활용법 → 예전엔 두번째 코드 처럼 익명클래스를 썻다면 자바8부터는 람다식으로 줄여서 쓸 수 있다. 변수에 할당하고, 메소드의 파라미터로 전달하고, 리턴타입으로 리턴을 할 수도 있다. 함수형 프로그램을 하려면 → 일급 함수로 사용, 순수함수, 고차함수, 불변성을 보장 하도록 해야 된다. 이렇게 함수형 인터페이스를 정의하지 않더라도, 자바에서 미리 정의해둔 함수형 인터페이스 들이 있다. java.lang.function 1. Function (1) T → R ( T값을 받아서 R을 반환) T , R의 반환 값이 같다면 Unary.. 정적 팩터리 메서드 (static factory method) 장점 1. 팩터리 메서드에 이름을 줌으로써 가시성을 높일 수 있다. 2. 인스턴스 통제 (*Flyweight Pattern) public 생성자를 쓰게 되면 매번 새로운 인스턴스를 만들 수 있기 때문에, 정적 팩터리 메서드를 이용해서 하나의 인스턴스만 만들 수 있게 제한을 걸 수 있다. 또, 매개 변수에 따라 다른 인스턴스를 리턴 해줄 수도 있다. 3. 리턴 타입을 인터페이스, 혹은 클래스 로 해놓고 하위 클래스를 반환 함으로써 다른 인스턴스를 리턴 할 수도 있다. 자바 8 이후 부터는 인터페이스 안에 정적 팩터리 메서드를 쓸 수 있기 때문에, 굳이 구현체가 없더라도 .... 자바 8 부터 공부하고 다시 봐야겠다.... 2022-04-04 수업 22일차 (Oracle - index, 실행 계획, ROWID, ROWNUM, Paging ) 보호되어 있는 글입니다. 2022-04-01 JAVA공부 21일차 보호되어 있는 글입니다. 이전 1 2 3 4 5 6 7 8 ··· 12 다음