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 |
Tags
- group by
- rsync
- PostgreSQL
- analytics4
- git
- IntelliJ
- docker
- SQL
- 명령어
- Linux
- 트랜잭션
- 차이점
- 티스토리챌린지
- 오블완
- Javascript
- spring
- 자바
- Python
- network
- oracle
- MongoDB
- top
- API
- 리눅스
- mysql
- DBMS
- java
- MariaDB
- mssql
- JPA
Archives
- Today
- Total
hanker
JAVA - Lambda (java 8) 본문
반응형
람다라 불리는 이 기능은 java 8 버전에서 도입된 기능으로, 익명 함수(anonymous function)를 더 간결하게 작성할 수 있게 해준다.
(여기서 익명함수란 일회성 함수를 뜻한다. 재사용하지 않고 특정 위치에서 일시적으로 필요한 동작을 정의할 때 사용)
코드의 가독성을 높이고, 중복성을 줄이는데 유용하다.
간단하게 문자열 출력을 하면서 비교해보면서 알아보자.
기존 방식
// 기존 표현식
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello, World!");
}
}).start();
새로운 스레드를 만들어 Hello, World를 출력하는 내용이다.
위 코드를 람다식으로 변경해보자.
// 람다 표현식
new Thread(() -> System.out.println("Hello, World!")).start();
많이 간단해졌다. 출력 내용은 동일하다.
위 코드도 익명함수를 정해서 다시 호출해보자
// 람다 표현식
Runnable runnable = () -> System.out.println("Hello, World!");
new Thread(runnable).start();
Runnable 인터페이스의 run() 메서드가 람다로 간결하게 표현되었다.
람다를 사용해서 callback 함수를 만들어보자.
// Callback 인터페이스 정의
interface Callback {
void onComplete(String result);
}
// 비동기 작업을 수행하는 클래스
class AsyncTask {
private Callback callback;
public AsyncTask(Callback callback) {
this.callback = callback;
}
public void execute() {
System.out.println("Start Job");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
callback.onComplete("End Job");
}
}
public class Main {
public static void main(String[] args) throws Exception {
// 람다 표현식으로 콜백 구현 이 부분이 Callback 인터페이스의 onComplete 메서드를 람다로 표현
AsyncTask task = new AsyncTask(result -> System.out.println("콜백 호출: " + result));
task.execute();
}
}
실행시켜보면
결과가 잘나온다.
람다식이 나오기전은 해당 callback 구현해줘야 하는데, 코드가 많이 간결해졌다.
public static void main(String[] args) throws Exception {
// 기존 콜백
AsyncTask task = new AsyncTask(new Callback() {
@Override
public void onComplete(String result) {
System.out.println("콜백 호출: " + result);
}
});
task.execute();
}
끝.
반응형
'JAVA' 카테고리의 다른 글
JAVA - 멀티쓰레드(Multi Thread) 반복문 병렬처리 방법 (1) | 2024.10.12 |
---|---|
Java - (Window/Linux) 디렉터리 목록 가져오기 (1) | 2024.09.20 |
JAVA - stream (1) | 2024.09.13 |
JAVA - HttpUrlConnection, HttpsUrlConnection (httpMethod GET, POST) (1) (0) | 2024.09.11 |
JAVA - HttpUrlConnection, HttpsUrlConnection (0) | 2024.09.10 |