Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 당근마켓
- jwt
- es6
- npm
- &연산
- 클론코딩
- 문서번호
- 데이터베이스 #try #이중
- ES5
- TS
- 0.5px border
- ZOOM
- literal
- 전역변수
- Strict
- 타입스크립트
- Props
- 0.25px border
- 컴포넌튼
- 10px
- entity
- angular
- Websocket
- 1px border
- 0.75px border
- 으
- TypeScript
- github
- font-size
- 서버리스 #
Archives
- Today
- Total
복잡한뇌구조마냥
[JAVA] 람다 ( 람다식 ) 본문
람다식 ( 익명 메소드 )
- 인터페이스 중에서 메소드를 하나만 가지고 있는 인터페이스를 함수형 인터페이스라고 함.
- 쓰레드를 만들 때 사용하는 Runnable 인터페이스의 경우 run() 메소드를 하나만 가지고 있음.
package lamda.exam;
public class LamdaExam {
public static void main(String[] args) {
new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i<10; i++){
System.out.println("hello");
}
}
}).start();
}
}
- 쓰레드가 실행되면 쓰레드 생성자 안에 넣은 run 메소드가 실행됨
- 자바는 메소드만 매개전수로 전달할 방법이 없어서 인스턴스만 전달할 수 있음.
- 그렇기 때문에 run 메소드를 가지고 있는 Runnable 객체를 만들어서 전달해야함.
package lamda.exam;
public class LamdaExam {
public static void main(String[] args) {
new Thread(()-> {
for(int i = 0; i<10; i++){
System.out.println("hello");
}
}).start();
}
}
- 람다식을 이용해서 수정한 코드
- () -> { ... } 부분이 람다식 (익명 메소드)
- JVM은 Thread생성자를 보고 () -> {}이 무엇인지 대상을 추론
- Thread생성자 api를 보면 Runnable 인터페이스를 받아들이는 것을 알 수 있음.
- JVM은 Thread 생성자의 람다식 매개변수를 Runnable을 구현하는 객체로 자동으로 만들어서 넣어줌.
람다식 문법
(매개변수 목록) -> { 실행문 }
- 자바스크립트의 화살표 함수와 비슷하나 부호가 "->" 임
// Compare.java
package lamda.exam;
public interface Compare {
public int compareTo(int a, int b);
}
// CompareExam.java
package lamda.exam;
public class CompareExam {
public static void exec(Compare compare){
int k = 10;
int m = 20;
int value = compare.compareTo(k, m);
System.out.println(value);
}
public static void main(String[] args) {
exec((a, b) -> a + b);
}
}
- JVM이 람다식을 받아들여서 인터페이스에 적합한 메소드를 자동으로 전달함.
- 람다식으로 구현하는 메소드 구현 방식에 따라 출력되는 결과물이 달라짐
- 람다식으로 함수를 전달하는 것처럼 간단하게 문법을 사용할 수 있음.
LIST
'BE > JAVA' 카테고리의 다른 글
[JAVA] 자주 사용하는 자료형 핵심 메소드 정리 (1) | 2025.07.14 |
---|---|
[JAVA] n진수 변환, 변환 정리 (String ↔ 숫자형) + 3진법 뒤집기 (0) | 2025.07.03 |
[JAVA] 쓰레드 ( Thread ) (2) | 2025.06.18 |
[JAVA] 어노테이션 (Annotation) (1) | 2025.06.17 |
[JAVA] 자바 IO ( Byte 단위, 다양한 타입, Char 단위 입출력) (0) | 2025.06.14 |