728x90
1. 메소드 레퍼런스(Method References)
Consumer<String> func = text -> System.out.println(text);
func.accept("Hello");
Consumer<String> func = System.out::println;
func.accept("Hello");
- Static 메소드 레퍼런스
- Instance 메소드 레퍼런스
- Constructor 메소드 레퍼런스
2. Static 메소드 레퍼런스
public class Example {
public static void main(String[] args) {
Executable exe = text -> Printer.printSomething(text);
Executable exe2 = Printer::printSomething;
exe.doSomething("do something");
exe2.doSomething("do something");
}
interface Executable {
void doSomething(String text);
}
public static class Printer {
static void printSomething(String text) {
System.out.println(text);
}
}
}
import java.util.function.Consumer;
public class Example {
public static void main(String[] args) {
Consumer<String> exe = text -> Printer.printSomething(text);
Consumer<String> exe2 = Printer::printSomething;
exe.accept("do something");
exe2.accept("do something");
}
public static class Printer {
static void printSomething(String text) {
System.out.println(text);
}
}
}
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> companies = Arrays.asList("google", "apple", "google", "apple", "samsung");
// 1. lambda expression
companies.stream().forEach(company -> System.out.println(company));
// 2. static method reference
companies.stream().forEach(System.out::println);
}
}
3. Instance 메소드 레퍼런스
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<Company> companies = Arrays.asList(new Company("google"),
new Company("apple"), new Company("samsung"));
companies.stream().forEach(company -> company.printName());
}
public static class Company {
String name;
public Company(String name) {
this.name = name;
}
public void printName() {
System.out.println(name);
}
}
}
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> companies = Arrays.asList("google", "apple", "google", "apple", "samsung");
companies.stream()
.mapToInt(String::length)
// .mapToInt(company -> company.length()) /* Lamda expression */
.forEach(System.out::println);
}
}
4. Constructor 메소드 레퍼런스
import java.util.Arrays;
import java.util.List;
public class Example {
public static void main(String[] args) {
List<String> companies = Arrays.asList("google", "apple", "google", "apple", "samsung");
companies.stream()
.map(Company::new)
.forEach(Company::printName);
}
public static class Company {
String name;
public Company(String name) {
this.name = name;
}
public void printName() {
System.out.println(name);
}
}
}
300x250
'Java' 카테고리의 다른 글
오버라이딩 (0) | 2023.07.27 |
---|---|
인터페이스 (0) | 2023.07.27 |
람다 표현식 (0) | 2023.07.09 |
Java의 함수형 인터페이스 (0) | 2023.07.09 |
함수형 인터페이스와 람다 표현식 (0) | 2023.07.06 |