일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Generic
- paging
- JPA
- calendar
- JPQL
- 벌크연산
- javaservlet
- LIST
- 프로젝트생성
- fullcalendar
- jQuery값전달
- fetchjoin
- 제너릭
- 자바서블릿
- JQuery
- jscalendar
- 페치조인
- 스프링데이터흐름
- 대량쿼리
- jQuery값전송
- 엔티티직접사용
- 페이징
- namedQuery
- values()
- jQueryUI
- javascriptcalendar
- joinfetch
- springflow
- Hibernate
- 제네릭
- Today
- Total
가자공부하러!
Java_5_람다식(Lambda Expressions) 본문
1. 람다식?
1. 정의
> 식별자 없이 실행 가능한 함수 표현식
> 다른 말로 익명 메소드라고 함
> 객체 지향 언어 보다는 함수 지향 언어에 가깝다.
2. 왜 쓰나요?
> 인터페이스가 가지고 있는 메소드를 간편하게 즉흥적으로 구현해서 사용하기 위함
ㄴ 조건 : 람다식으로 구현할 인터페이스는 단 한개의 추상메소드만 가지고 있어야 한다.
> 자바는 인터페이스의 메소드를 활용하려면 객체를 생성해야만 했다.
ㄴ메소드만 전달할 수 있는 방법이 없었다는 말.
> 람다식을 사용하면 객체 생성 없이 메소드를 사용할 수 있다! 와!
3. 사용 방법은?
> 기본 구조 :
- (타입 매개변수, ... ) -> { 실행문; ... } ;
- 매개인자의 자료형 생략 가능
- 매개인자가 한개인 경우 매개인자의 괄호 생략 가능
- 실행문이 한개인 경우 중괄호 생략 가능
- 실행문이 한개이면서, 실행문이 return인 경우 중괄호와 return 생략 가능
예 1)
> 인터페이스 중에서 메소드를 하나만 가지고 있는 인터페이스를 함수형 인터페이스라고 한다.
- 쓰레드를 만들 때 사용하는 Runnable 인터페이스의 경우 run()메소드를 하나만 가지고 있다.
> Runnable을 이용하여 쓰레드를 만드는 방법
1 2 3 4 5 6 7 8 9 10 | public class LambdaExam1 { public static void main(String[] args) { new Thread(new Runnable(){public void run(){ for(int i = 0; i < 10; i++){ System.out.println("hello"); } }}).start(); } } | cs |
- 쓰레드가 실행되면 쓰레드 생성자 안에 넣은 run() 메소드가 실행된다.
- 자바는 메소드만 매개변수로 전달할 방법이 없다. 인스턴스만 전달 할 수 있다.
- 그렇기 때문에 run()메소드를 가지고 있는 Runnable 객체를 만들어서 전달한다.
메소드만 전달할 수 있다면 좀 더 편리하게 프로그래밀 할 수 있을텐데!
람다식으로 해치우자! 해치우자!
> 람다식을 이용해서 수정한 코드
1 2 3 4 5 6 7 8 9 | public class LambdaExam1 { public static void main(String[] args) { new Thread(()->{ for(int i = 0; i < 10; i++){ System.out.println("hello"); } }).start(); } } | cs |
- ()->{ .... } 부분이 람다식. 다른 말로 익명 메소드.
- JVM은 쓰레드 생성자를 보고 ()->{}이 무엇인지 대상을 추론한다.
- 쓰레드 생성자 api를 보면 Runnable 인터페이스를 받아들이는 것을 알 수 있다.
- JVM은 Thread 생성자가 Runnable 인터페이스를 구현한 것이 와야 하는 것을 알게 되고,
람다식을 Runnable을 구현하는 객체로 자동으로 만들어서 매개변수로 넣어준다.
> 제네릭, 컬렉션도 제대로 모르면서 람다는 무슨...
> 자바 중급부터 다시 공부합니다!
참고 문서 :
> 프로그래머스, 자바 중급 - 람다식 (https://programmers.co.kr/learn/courses/9/lessons/280)
> https://palpit.tistory.com/671
'공부 > Java' 카테고리의 다른 글
Java_7_컬렉션 프레임워크, java.util, Generic, Time (0) | 2019.05.21 |
---|---|
Java_6_Object클래스, java.lang 패키지 (0) | 2019.05.21 |
Java_4_Stream(스트림) (0) | 2019.05.17 |
신나는 별찍기 공부 (0) | 2019.05.16 |
Java_3_제네릭(Generic) (0) | 2019.05.14 |