forked from winterbe/java8-tutorial
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLambda4.java
More file actions
53 lines (38 loc) · 1.4 KB
/
Lambda4.java
File metadata and controls
53 lines (38 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package com.winterbe.java8.samples.lambda;
/**
* @author Benjamin Winterberg
*/
public class Lambda4 {
static int outerStaticNum;
int outerNum;
/*
익명 클래스와 마찬가지로 람다 식은 멤버 변수와 static 멤버 변수도 접근 가능
*/
void testScopes() {
/*
람다 표현식의 변수 접근 범위는 익명 클래스와 매우 비슷하다
*/
// 지역 변수는 final 이거나 final 처럼 변경이 되지 않는 지역변수의 경우 접근 가능
int num = 1;
Lambda2.Converter<Integer, String> stringConverter =
(from) -> String.valueOf(from + num);
String convert = stringConverter.convert(2);
System.out.println(convert); // 3
// 익명클래스와는 달리 Default Method 는 사용할 수 없다.
// Formula formula = a -> sqrt(a * 100);
Lambda2.Converter<Integer, String> stringConverter2 = (from) -> {
outerNum = 13;
return String.valueOf(from);
};
String[] array = new String[1];
Lambda2.Converter<Integer, String> stringConverter3 = (from) -> {
array[0] = "Hi there";
return String.valueOf(from);
};
stringConverter3.convert(23);
System.out.println(array[0]);
}
public static void main(String[] args) {
new Lambda4().testScopes();
}
}