728x90
반응형
결론: 자바 11에서 몇 가지 기능이 추가되었지만 프로젝트 등에서는 안정성을 위해 자바 8을 사용하는 것이 좋다
자바 8 (출처: 스프링 입문을 위한 자바 객체 지향의 원리와 이해)
- Interface Default and Static Methods
- Lambda expressions
// 람다식 미적용 코드
public class NoLambda{
public static void main(String[] args){
Runnable r = new Runnable(){
public void run(){
System.out.println("Run!!");
}
}
}
}
// 람다식 적용 코드
public class UseLambda{
public static void main(String[] args){
Runnable r = () -> {
System.out.println("Run!!");
}
}
}
- Functional interfaces
public class ExMyFunctionalInterface{
public static void main(String[] args){
MyFunctionalInterface mfi = a -> a * a;
int b = mfi.runSomething(5);
System.out.println(b);
}
}
@FunctionalInterface
interface MyFunctionalInterface{
public abstract int runSomething(int count);
}
// 메서드 인자로 람다식 사용
public class ExMethodReference{
public static void main(String[] args){
doIt(a -> a * a);
}
public static void doIt(MyFunctionalInterface mfi){
int b = mfi.runSomething(5);
System.out.println(b);
}
}
// 메서드 반환값으로 람다식 사용
public class ExReturnLambda{
public static void main(String[] args){
MyFunctionalInterface mfi = todo();
int result = mfi.runSomething(3);
System.out.println(result);
}
public static MyFunctionalInterface todo(){
return num -> num * num;
}
}
- Method References
메서드 레퍼런스 유형 | 람다식의 인자 | 예제 |
---|---|---|
클래스::정적메서드 | 정적 메서드의 인자가 된다 | Math::sqrt num->Math.sqrt(num) |
인스턴스::인스턴스메서드 | 인스턴즈 메서드의 인자가 된다 | System.out::println sqrtNum->System.out::println(sqrtNum) |
클래스::인스턴스메서드 | 첫 번째 인자는 인스턴스가 되고 그다음 인자들은 인스턴스 메서드의 인자들이 된다 | Integer::compareTo (a, b) -> a.compareTo(b) |
// 생성자 레퍼런스 예시
import java.util.function.Supplier;
public class Ex{
public static void main(String[] args){
Supplier<Ex> factory = Ex::new;
Ex Ex_1 = factory.get();
Ex Ex_2 = factory.get();
}
}
- Lambda Expression in Collection Stream
// 컬렉션 스트림 미적용 코드
public class NoStream{
public static void main(String[] args){
Integer[] ages = { 20, 25, 18, 27, 30, 21, 17, 19, 34, 28 };
for(int age : ages){
if(age < 20){
System.out.format("Age %d can't enter\n", age);
}
}
}
}
// 컬렉션 스트림 적용 코드
import java.util.Arrays;
public class UserStream{
public static void main(String[] args){
Integer[] ages = { 20, 25, 18, 27, 30, 21, 17, 19, 34, 28 };
Arrays.stream(ages)
.filter(age -> age < 20)
.forEach(age -> System.out.format("Age %d can't enter\n", age));
}
}
자바 11 (출처: https://livenow14.tistory.com/81)
- String 클래스, 메서드 추가: isBlank, lines, strip, stripLeading, stripTrailing, repeat
- File 클래스, 메서드 추가: readString, writeString
- 컬렉션 인터페이스, 메서드 추가: 컬렉션의 toArray() 메서드를 오버로딩하는 메서드 추가, 원하는 타입의 배열 선택 가능
- Predicate 인터페이스에 static not 메서드(부정을 나타냄) 추가
- 람다에서 로컬 변수 var 사용
- HTTP Client가 표준 기능이 됨(HTTP/1.1, HTTP/2 지원)
728x90
반응형
'자바' 카테고리의 다른 글
[Java] Linux-centOS7에 openJDK 11 설치하기 (0) | 2022.08.29 |
---|---|
[이펙티브 자바] 생성자 대신 정적 팩터리 메서드를 고려하라(아이템 1) (0) | 2022.08.24 |
자바 입출력: Scanner vs BufferedReader (0) | 2022.02.26 |
자바의 특징과 구조 (0) | 2022.02.25 |
이클립스 vs 인텔리제이 (0) | 2022.02.25 |