-
[TIL]메소드 참조; method referenceCodeStates_Backend/TIL (Today I Learned) 2022. 7. 21. 01:14
⭐️ 개념 학습 순서 : 함수형 프로그래밍 ➡️ 람다,메소드 참조 ➡️ Stream
메소드 참조(method reference)
🧲 정의
람다 표현식이 단 하나의 메소드만을 호출하는 경우, 더 간단하게 표현하는 방법이다.
추가적으로 단순히 객체를 생성하고 리턴하는 생성자 역할의 람다식도 대체할 수 있다.
🧲 종류
1️⃣ 클래스이름 :: 메소드이름
2️⃣ 참조변수이름 :: 메소드이름
3️⃣ 생성자이름 :: new
🧲 1️⃣의 예시
(left, right) -> Math.max(left, right);
IntBinaryOperator operator = Math :: max; //메서드 참조
🧲 2️⃣의 예시
//Calculator.java public class Calculator { public static int staticMethod(int x, int y) { // static 메소드이다. return x + y; } public int instanceMethod(int x, int y) { // 인스턴스 메소드이다. return x * y; } }
import java.util.function.IntBinaryOperator; public class MethodReferences { public static void main(String[] args) throws Exception { IntBinaryOperator operator; // static 메서드의 경우 operator = Calculator::staticMethod; System.out.println("static 메서드 결과 : " + operator.applyAsInt(3, 5)); // 인스턴스 메서드의 경우 Calculator calculator = new Calculator(); operator = calculator::instanceMethod; System.out.println("인스턴스 메서드 결과 : "+ operator.applyAsInt(3, 5)); } } /* static 메서드 결과 : 8 인스턴스 메서드 결과 : 15 */
🧲 3️⃣의 예시
//Member.java public class Member { private String name; private String id; public Member() { System.out.println("Member() 실행"); } public Member(String id) { System.out.println("Member(String id) 실행"); this.id = id; } public Member(String name, String id) { System.out.println("Member(String name, String id) 실행"); this.id = id; this.name = name; } public String getName() { return name; } public String getId() { return id; } }
import java.util.function.BiFunction; import java.util.function.Function; public class ConstructorRef { public static void main(String[] args) throws Exception { Function<String, Member> function1 = Member::new; Member member1 = function1.apply("kimcoding"); BiFunction<String, String, Member> function2 = Member::new; Member member2 = function2.apply("kimcoding", "김코딩"); } } /* Member(String id) 실행 Member(String name, String id) 실행 */
'CodeStates_Backend > TIL (Today I Learned)' 카테고리의 다른 글
[모의기술면접] Section4 (0) 2022.08.18 *[TIL] JPA , Spring Data JPA (0) 2022.07.24 [TIL][모의기술면접#3] (0) 2022.07.20 [TIL]삽입 정렬 Insertion Sort (0) 2022.07.18 [TIL] Spring Rest Docs (0) 2022.07.16