프로젝트를 진행하며 여러 요구사항 때문에 Java 11에서 17로 변경하였다. 근데 정확히 어떤 차이점이 있는지 알지 못해 17에서 제공하는 기능들을 활용하지 못하는거 같아 11과 17에는 어떤 차이점이 있는지 알아보기로 하였다.
LTS는 Long Term Support의 약자로, 오랜 기간 지원하는 특별한 버전의 에디션이다.
모호함과 반복전인 코드와 멀티코어 활용 어려움이라는 문제를 해결default를 앞에 붙인 메서드를 정의하여 구현을 interface 안에서 할 수 있다List.of(), Set.of(), Map.of()isBlank(), lines() : return streams of lines, strip() int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
default -> {
String s = day.toString();
int result = s.length();
yield result;
}
};
author.age = 35;
---
Exception in thread "main" java.lang.NullPointerException:
Cannot assign field "age" because "author" is null
public class Person {
private final String name;
private final String address;
public Person(String name, String address) {
this.name = name;
this.address = address;
}
@Override
public int hashCode() {
return Objects.hash(name, address);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
} else if (!(obj instanceof Person)) {
return false;
} else {
Person other = (Person) obj;
return Objects.equals(name, other.name)
&& Objects.equals(address, other.address);
}
}
@Override
public String toString() {
return "Person [name=" + name + ", address=" + address + "]";
}
// standard getters
}
14 이후 Record 사용 가능
public record Person (String name, String address) {}
public String textBlocks() {
return """
Get busy living
or
get busy dying.
--Stephen King""";
}
public abstract sealed class Shape
permits Circle, Rectangle, Square {...}
public String test(Object obj) {
return switch(obj) {
case Integer i -> "An integer";
case String s -> "A string";
case Cat c -> "A Cat";
default -> "I don't know what it is";
};
}
감사합니다. 이런 정보를 나눠주셔서 좋아요.