(자바동영상/자바교육/자바강의/자바강좌)JAVA8 forEach, 람다식, 함수형인터페이스
자바8
@FunctionalInterface
public interface Consumer<T> {
void accept(T t)
}
void forEach(Consumer<T> action)
empNames.forEach( (s) -> System.out.println(s) );
자바7 개선된 for문
for (String s : empNames) {
System.out.println(s));
}
자바8 이전까지 Collection등을 순회할 때 Iterator(반복자)를 얻어 순회했지만 자바8 이후부터는 forEach로 가능하다.
forEach로 비즈니스 로직을 분리하여 재사용가능
String[] myArr = {"오라클","자바"};
List<String> list = (List)Arrays.asList(myArr);
list.forEach(s -> System.out.println(s)); list.forEach(System.out::println);
[결과]
오라클
자바
------
오라클
자바
[예제]
package javatest;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
//Consumer implementation that can be reused
class OjcConsumer implements Consumer<String> {
public void accept(String s) {
System.out.println("Consumer impl :: " + s);
}
}
public class ForTest {
public static void main(String[] args) {
String[] myArr = {"오라클자바", "커뮤니티"};
List<String> myList = (List)Arrays.asList(myArr);
// 반복자를 얻어 Collection을 순회
Iterator<String> iter = myList.iterator();
while (iter.hasNext()) {
System.out.println("Iterator String :: " + iter.next());
}
// 이번에는 forEach문을 이용하자.
// Consumer는 자바에서 제공하는 추상메소드가 하나 있는 함수형 인터페이스이다.
// 파라미터를 받아서 void형 accept 메소드 구현
myList.forEach(new Consumer<String>() {
public void accept(String s) {
System.out.println("forEach s :: " + s);
}
});
// Consumer 인터페이스를 구현한 클래스를 new후 forEach에 사용
myList.forEach(new OjcConsumer());
// 이번에는 람다식으로...
// 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로
// 람다식을 '익명 함수(anonymous function)'라고 한다.
// forEach안에는 Consumer 인터페이스 타입이 들어와야 하는데
// accept 추상메소드 하나만 있으므로 람다식으로 구현한 아래 괄호안의 메소드는
// accept 추상메소드의 구현체인 익명함수인것이다.
myList.forEach(s -> System.out.println("람다식 :: " + s));
//이번에는 더블콜론 연산자로... 이름만으로 특정메소드 호출
//타겟 레퍼런스는 :: 앞에 놓고 메소드명은 :: 뒤에 놓습니다.
System.out.println("----- 더블콜론 연산자 ------");
myList.forEach(System.out::println);
}
}
Iterator String :: 오라클자바
Iterator String :: 커뮤니티
forEach s :: 오라클자바
forEach s :: 커뮤니티
Consumer impl :: 오라클자바
Consumer impl :: 커뮤니티
람다식 :: 오라클자바
람다식 :: 커뮤니티
----- 더블콜론 연산자 ------
오라클자바
커뮤니티
#자바forEach, #자바for, #자바람다식, #함수형인터페이스, #자바, #JAVA, #자바변수, #클래스변수, #인스턴스변수, #자바동영상, #자바동영상강의, #자바강의, #자바강좌, #JAVA, #JAVA동영상, #JAVA강의, #JAVA강좌, #자바교육, #JAVA교육, #자바소스
https://youtu.be/7TZYJHHXifQ
댓글 없음:
댓글 쓰기