반응형
이 포스팅에서 작성하는 내용은 더 자바, Java 8 에서 발췌하였습니다.
https://www.inflearn.com/course/the-java-java8
람다 표현식(Lambda Expression)
- (인자) -> {함수 몸체}
- 인자가 없어도, () 로 표현
- 인자가 하나라면, 소괄호 생략 가능
- 인자가 여러개라면, (a, b)
- 인자에 타입을 명시할 수 있음(컴파일러가 추론)
(Integer a, Integer b) - 함수 몸체 부분에 함수 동작을 명시
- 한 줄인 경우, 중괄호와 return 생략 가능
a -> a+10
- 변수 참조
- 지역 변수를 참조하는 경우에는, final OR effective final 타입만 가능하다.
- effective final : final로 선언하지 않았지만 해당 변수가 재할당되지 않는 경우 Java에서 알아서 final로 간주. (Java 8부터 지원)
import java.util.function.UnaryOperator;
public class Example3 {
public static void main(String[] args) {
// 람다 표현식 기본 형식
UnaryOperator<Integer> plus100_1 = (num) -> {
return num+100;
};
// 인자가 하나일 경우, 인자쪽에 괄호 제거
UnaryOperator<Integer> plus100_2 = num -> {
return num+100;
};
// 리턴 식이 하나의 식일 경우 중괄호 및 return 생략 가능
UnaryOperator<Integer> plus100_3 = num -> num+100;
System.out.println(plus100_1.apply(50));
System.out.println(plus100_2.apply(50));
System.out.println(plus100_3.apply(50));
}
}
메서드 레퍼런스(Method Reference)
- 클래스의 메서드를 간결하게 표현하는 방법
- 아래 예제와 같이 타입 :: 메서드 이름 으로 표현한다.
public class CustomString {
private String str;
public CustomString() {}
public CustomString(String str){
this.str = str;
}
public String name(String str) {
return "name : " + str;
}
public static String staticPrint(String str) {
return "staticPrint : " + str;
}
public String getStr() {
return str;
}
}
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;
public class Example3 {
public static void main(String[] args) {
/** Method Reference **/
// 1. 기본 static Method 참조 방법
String str1 = CustomString.staticPrint("Animal");
UnaryOperator<String> uo1 = CustomString::staticPrint;
String str2 = uo1.apply("Animal");
System.out.println(str1);
System.out.println(str2);
// 2. 기본 Method 참조 방법
CustomString cs = new CustomString();
String str3 = cs.name("Human");
UnaryOperator<String> uo2 = cs::name;
String str4 = uo2.apply("Human");
System.out.println(str3);
System.out.println(str4);
// 3. 생성자를 호출하는 방법(입력값이 없는 생성자)
CustomString cs2 = new CustomString();
Supplier<CustomString> supplier = CustomString::new;
CustomString cs3 = supplier.get();
// 4. 생성자를 호출하는 방법(입력값이 있는 생성자)
CustomString cs4 = new CustomString("Earth");
Function<String, CustomString> function = CustomString::new;
CustomString cs5 = function.apply("Earth");
}
}
반응형
'BE > Java' 카테고리의 다른 글
[Java 8] stream (0) | 2023.04.14 |
---|---|
[Java 8] Default Method, Java 8의 NEW 기본 메서드 (0) | 2023.04.13 |
[Java 8] Java 8과 함수형 인터페이스 (0) | 2023.04.11 |
[Mockito] Mockito (0) | 2023.04.05 |
[Java] Jar파일에 있는 파일 읽기 (0) | 2023.03.31 |