2016. 2. 13. 00:56 Programing/JAVA
JAVA 1.8 정리 (2)
identity function은 같은 타입의 값 그대로를 리턴하는 메소드이다.
public String f (String value) {
return "value is" + value;
}
의 방식이 아닌 말 그대로 받은 값 그대로 리턴을 해야한다.
public String f (String value) {
return value;
}
그럼 이 방식을 왜 사용하는가?
identity 방식을 사용하면 (return t->t;)
널 포인터에 관한 처리를 해줄 수 있기 때문
ps
Function 인터페이스의 identity()를 사용해도 된다.(자동으로 타입을 추론한다)
ex) 리스트의 숫자에 2를 곱한 값과 그렇지 않은 값을 출력하기
public class Ex1 {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
System.out.println("map (number, null)" + map(numbers, i->i*2));
System.out.println("map (number, null)" + map(numbers, null));
}
private static <T, R> List<R> map(List<T> list, Function<T, R> mapper) {
final Function<T, R> function;
if (mapper != null) {
function = mapper;
} else {
function = t -> (R) t;
}
final List<R> result = new ArrayList();
for(final T t: list){
result.add(function.apply(t));
}
return result;
}
}
public class Ex2 {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
System.out.println("map (number, null)" + map(numbers, i->i*2));
System.out.println("map (number, null)" + map(numbers, i->i));
}
private static <T, R> List<R> map(List<T> list, Function<T, R> mapper) {
final List<R> result = new ArrayList();
for(final T t: list){
result.add(mapper.apply(t));
}
return result;
}
}
로 처리가 가능하다.
'Programing > JAVA' 카테고리의 다른 글
JAVA 1.8 정리 (1) (0) | 2016.02.12 |
---|---|
JAVA static 선언 try catch (0) | 2016.01.12 |
Netty 인코더 디코더의 아주 간단한 개념 (0) | 2016.01.11 |
Netty (0) | 2016.01.11 |
This Keyword (0) | 2015.02.10 |