Java의 화살표 연산자 ->
이 튜토리얼에서는 화살표 연산자(->
)가 Java에서 수행하는 작업을 소개하고 주제를 이해하기 위한 몇 가지 예제 코드도 나열합니다.
Java 8에서는 새로운 기능인 람다 표현식이 추가됨과 동시에 람다 표현식을 구성하는 데 사용되는 화살표 연산자가 Java에 등장했습니다. 표현식 본문에서 인수를 분리합니다.
(parameters) -> {
statements;
} // Lambda expression having arrow
Lambda 표현식은 Java 8에서 도입되었으며 Java의 익명 클래스 대신 사용하여 코드를 보다 간결하고 읽기 쉽게 만들 수 있습니다.
다음은 Java 8 이전에 Java에서 익명 클래스를 만드는 방법의 예입니다.
Runnable r = new Runnable() {
@Override
public void run() {
System.out.print("Run method");
}
};
이것이 Java 8에서 람다 표현식을 사용하여 위의 작업을 구현하는 방법입니다.
Runnable r = () -> System.out.print("Run method");
람다 및 화살표 연산자의 사용도 이해하기 위해 몇 가지 예부터 시작하겠습니다.
Java에서 화살표 연산자를 사용하는 방법
이 예제에서는 화살표 연산자를 사용하여 Drawable
인터페이스의 draw()
메서드를 구현하는 람다 식을 만들었습니다. 아래 예를 참조하십시오.
interface Drawable {
public void draw();
}
public class Main {
public static void main(String[] args) {
int width = 20;
// arrow operator
Drawable d2 = () -> {
System.out.println("Drawing width: " + width);
};
d2.draw();
}
}
출력:
Drawing width: 20
람다 표현식은 기능적 접근 방식으로 간결한 코드를 만드는 가장 좋은 방법이므로 Java 코드에서 여러 가지 방법으로 사용할 수 있습니다. 적용할 수 있는 몇 가지 예를 살펴보겠습니다.
Java 컬렉션의 화살표 연산자
이 예에서는 람다 식을 사용하여 ArrayList 데이터를 필터링합니다. 스트림 API와 filter()
메서드를 사용하여 원하는 결과를 얻었습니다. 비-람다 코드보다 람다를 사용하여 코드를 만드는 것이 얼마나 쉬운지 알 수 있습니다. 아래 예를 참조하십시오.
package javaexample;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
class Product {
int id;
String name;
float price;
public Product(int id, String name, float price) {
this.id = id;
this.name = name;
this.price = price;
}
}
public class Main {
public static void main(String[] args) {
List<Product> list = new ArrayList<Product>();
list.add(new Product(1, "Samsung S5", 17000));
list.add(new Product(3, "Iphone 12", 100500));
list.add(new Product(2, "Sony Xperia", 25000));
// using arrow to filter data
Stream<Product> filtered_data = list.stream().filter(p -> p.price > 17000);
filtered_data.forEach(product -> System.out.println(product.name + ": " + product.price));
}
}
출력:
Iphone 12: 100500.0
Sony Xperia: 25000.0
Java 스레드의 화살표 연산자
이것은 실행 가능한 인터페이스의 run()
메소드를 구현하는 데 사용한 람다 표현식의 또 다른 용도입니다. Runnable은 단일 메서드 인터페이스이므로 람다 식을 사용하기 쉽습니다. 아래 예를 참조하십시오.
package javaexample;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
// using arrow
Runnable r = () -> {
System.out.println("Thread is running...");
};
Thread t2 = new Thread(r);
t2.start();
}
}
출력:
Thread is running...