// before java 8
int getMax(int a, int b){
return a > b ? a : b;
}
// use lambda in java 8
(int a, int b) -> {return a > b ? a : b;}
// omit 'return'
(int a, int b) -> a > b ? a : b;
Map<Integer, String> map = new HashMap<>();
map.put(1, "hi");
// before use Optional
String text = map.get(2); // return null
int length = text == null ? 0 : text.length(); // null check
// use Optional
Optional<String> text = Optional.ofNullable(map.get(2)); // Optional
int length = text.map(String::length).orElse(0) // null-safe
- Class::Instance Method (public)
- Class::static Method (static)
- Object::Instance Method (new)
String::compareToIgnoreCase
= (x, y) -> x.compareToIgnoreCase(y)
Object:isNull
= x -> Object.isNull(x)
System.out::println
= x -> System.out.println(x)
Java 8에서는 기본 구현을 포함하는 인터페이스를 정의하는 2가지 방법을 제공한다.
이로 인해서 기존에 abstract class에서 interface를 구현해서 default method를 만들어 내는 방법을 사용하지 않아도 된다.
public interface Car(){
void run();
default String beep(){
return "beep beep";
}
}
Car car = new CarImpl();
System.out.println(car.beep());
public interface Car(){
void run();
static String beep(){
return "beep beep";
}
}
System.out.println(Car.beep());
이미지 출처
perm genearation : http://karunsubramanian.com/websphere/one-important-change-in-memory-management-in-java-8/