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 |
Tags
- visual studio code
- 애널리틱스4
- IntelliJ
- analytics4
- 명령어
- gtihub
- 오블완
- github
- jetbrain
- MariaDB
- 자동배포
- TIOBE
- Jenkins
- ANTIFRAGILE
- spring
- 르세라핌
- java
- JPQL
- 티스토리챌린지
- EntityManager
- docker
- UNION ALL
- JPA
- db종류
- git branch 삭제
- pat발급
- Python
- ci/cd
- git pat
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 |