-
람다식(2) / 메소드 참조프로그래밍/JAVA 자바 2021. 9. 10.반응형
package lambdaEx; public class Ex101_MethodReference { public static String convert(Integer num, Conversion f) { return f.convert(num); } public static void main(String[] args) { // 메소드 참조 // 정수를 문자열로 변환 // Conversion c = (n) -> {return String.valueOf(n);}; Conversion c = n -> String.valueOf(n); String s = c.convert(100); System.out.println(s); Conversion c2 = String::valueOf; s = c2.convert(200); System.out.println(s); } } interface Conversion { public String convert(Integer num); }
- String.valueOf(n) 을 String::valueOf 로 바꾼게 메소드 참조이다.
package lambdaEx; import java.util.function.Supplier; public class Ex102_ConstructorReference { public static void main(String[] args) { // Supplier = 매개변수가 없고 리턴값이 있는 추상 메소드 // 람다식 Supplier<Object> o1 = () -> new Object(); Object ob1 = o1.get(); System.out.println(ob1); // 생성자 메소드 참조 Supplier<Object> o2 = Object::new; Object ob2 = o2.get(); System.out.println(ob2); } }
- 매개변수가 없고 리턴값이 있는 추상 메소드를 참조 해보자.
- 람다식으로 표현 먼저 해보면 Supplier<Object> << 매개변수 없고 리턴값 있는 추상 메소드를 가진 인터페이스
- 객체 생성하고 바로 람다식으로 매개변수 없으니까 () 괄호 열어주고 생성자를 호출 한다.
- () -> new Object() << 람다로 생성자 호출 하는 법
이걸 람다식이 아니라 메소드 참조로 바꾸면
- Object::new 하나로 끝난다. << 메소드 참조로 생성자 호출 하는 법
package lambdaEx; import java.util.function.BiFunction; public class Ex103_InstanceReference { public static void main(String[] args) { // 람다식 // Bifunction<T,U,R> : 두개의 매개변수 T,U과 리턴값 R이 있는 추상 메소드 BiFunction<String, String, Boolean> f1 = (s1, s2) -> s1.equals(s2); Boolean b1 = f1.apply("java", "java"); System.out.println(b1); // 인스턴스 메소드 참조 BiFunction<String, String, Boolean> f2 = String::equals; Boolean b2 = f2.apply("java", "java"); System.out.println(b2); } }
- 인스턴스 메소드 참조 해보기
반응형'프로그래밍 > JAVA 자바' 카테고리의 다른 글
자바 - 특수 문자 출력 하는 2가지 방법 (0) 2024.04.28 자바 / 스트림 Stream (0) 2021.09.12 자바 람다식(1) 개념 (0) 2021.09.10 어노테이션 (Annotation) (0) 2021.09.09 자바 네트워크(3) / 숫자 야구 게임 (0) 2021.09.09