Record 타입 (Preview)
Java 14부터 Record 타입이 사용 가능합니다.
record타입은 불변객체 타입으로 해당 필드에 final 선언 및 생성자, getter, equals(), hashCode(), toString() 메서드를 자동으로 생성합니다.
VO 객체에 사용하면 좋을 듯!
public class Java14 {
public static void main(String[] args) {
testRecord();
}
private static void testRecord() {
// 생성자, getter, equals(), hashCode(), toString() 메소드 자동 생성
Person person = new Person("kye", 32);
int age = person.age();
String name = person.name();
// Objects.hash()를 이용한 hashCode() 메소드 생성
int i = person.hashCode();
// equals는 두 record객체가 같은 클래스인지 확인 후 모든 필드가 동일한지 순차적으로 비교.
Object newPerson = new Person("kye", 32);
boolean equals = person.equals(newPerson);
System.out.println(equals); // true
Person newPerson2 = new Person("kye", 31);
boolean equals2 = person.equals(newPerson2);
System.out.println(equals2); // false
// toString() 메소드 생성
System.out.println(person); // Person[name=kye, age=32]
}
public record Person(String name, int age) {
}
// 다 직접 생성해줘야함
public static class NotRecordPerson {
private String name;
private int age;
public NotRecordPerson(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
}
instanceof 패턴 매칭 (Preview)
기존과 다르게 형변환 없이 바로 해당 타입 변수에 할당이 가능해졌습니다.
public class Java14 {
public static void main(String[] args) {
originInstanceof();
patternMatchingInstanceof();
}
private static void patternMatchingInstanceof() {
Object obj = "Hello!";
if(obj instanceof String str){
System.out.println(str);
}
}
private static void originInstanceof() {
Object obj = "Hello!";
if(obj instanceof String){
String str = (String) obj;
System.out.println(str);
}
}
}
NPE 에러 문구 개선
Java 14에서는 **NullPointerException (NPE)**가 발생할 때 더 구체적인 정보를 제공하도록 개선되었습니다. 이제 예외 메시지에서 정확히 어느 부분에서 null이 발생했는지를 명확히 알려줍니다.
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Person.getAddress()" because "person" is null
at Main.main(Main.java:3)
그 외
12에 들어온Switch Expressions standard됨.
'Language > Java' 카테고리의 다른 글
[Java] Java 버전별 특징 : Java 16~17 (1) | 2024.10.09 |
---|---|
[Java] Java 버전별 특징 : Java 15 (sealed class, hidden classes) (1) | 2024.10.08 |
[Java] Java 버전별 특징 : Java 13 (Text Blocks, Dynamic CDS Archives, ZGC 개선) (0) | 2024.10.06 |
[Java] Java 버전별 특징 : Java 12 (Switch Expressions with yield, G1GC 개선, 더 빠른 시작시간 및 메모리 최적화) (0) | 2024.10.05 |
[Java] Garbage Collection(GC) 가비지 컬렉션 (0) | 2022.04.03 |
댓글