Java 8 2014/03/18 Released
언어의 형태가 바뀌었다.
순수객체지향 지향 -> Functional Programming.
병렬 지원 - 라이브러리, 언어 차원에서 지원
C# 4(2009)에서 지원, C++ 11(2011)에서 지원 (Visual studio 2010, gcc 4.6,4.8)
람다 표현식
- 실행할 함수구문의 블럭을 보낸다.
- 마지막 표현식이 리턴 값이 된다.
- 중괄호 사용 시 리턴을 표기해줘야 한다.
- 선언과 동시에 구현한다.
- class Worker implements Runnable {
- @Override
- public void run() {
- System.out.println("Hello Thread.");
- }
- }
- class LengthComparator implements Comparator<String> {
- @Override
- public int compare(String o1, String o2) {
- return Integer.compare(o1.length(), o2.length());
- }
- }
- public class Ex1 {
- public static void main(String[] args) {
- // old 1
- new Thread(new Worker()).start();
- // old 2
- new Thread(new Runnable() { // assistance 가 지원된다.
- @Override
- public void run() {
- // blah blah
- System.out.println("old_2");
- }
- }).run();
- // new
- new Thread(() -> System.out.println("Hello") // 실행할 함수 구문의 블럭을 보낸다.
- // 인터페이스의 형태로 보낸다. functional interface
- ).start();
- int oldCom = new LengthComparator().compare("f", "s");
- Comparator<String> lengthComparator = (String first, String second) -> Integer
- .compare(first.length(), second.length()); // 마지막 표현식이 리턴 값이 된다.
- Comparator<String> lenCom = (first, second) -> {
- return Integer.compare(first.length(), second.length()); //중괄호 사용시 리턴을 줘야한다.
- };
- System.out.println(oldCom);
- lengthComparator.compare("com", "com");
- lenCom.compare("com", "com2");
- Button button = new Button();
- button.setButtonListener(()->System.out.println("click")); // 선언하며 구현한다.
- button.setButtonListener(new IButtonListener() {
- @Override
- public void onClick() {
- System.out.println("old_click");
- }
- });
- // 옵저버 패턴의 구현 형식이 바뀌게 된다.
- button.click();
- }
- }
- interface IButtonListener {
- void onClick();
- }
- class Button {
- IButtonListener listener;
- void setButtonListener (IButtonListener listener) {
- this.listener = listener;
- }
- void click() {
- if(listener != null) {
- listener.onClick();
- }
- }
- }
- class Dialog implements IButtonListener {
- @Override
- public void onClick() {
- System.out.println("click");
- }
- }
'java' 카테고리의 다른 글
Java 8 신기능 정리 - Default Method (0) | 2014.07.02 |
---|---|
Java 8 신기능 정리 - Method Reference, Construct Reference (0) | 2014.07.02 |
Java7 의 신기능 정리 (0) | 2014.07.01 |
Java 7 try catch 문법. autocloseable (0) | 2014.06.20 |
코드 품질 관리 (0) | 2014.04.17 |