쓰레드
- CPU를 통해 실행하는 최소 단위
- Runnable interface 구현하여 정의
- main이 끝나도 쓰레드가 아직 수행 중이면 프로그램은 종료하지 않음
타이머
- java.util.Timer
- 정해진 시간 간격마다 사건을 발생
record
- 데이터 클래스를 간단하게 정의
- 상속받을수없고 final 클래스임
- getter, toString(), equals(), hashCode() 자동생성
- record 객체는 불변객체임
- 멤버 변수 중 참조 타입의 불변 객체가 아닌 객체가 있으면
주의(getter로 접근뒤에 내부 수정할수있음)
public record Position(int a, int b) {
//a,b는 private 필드고 getter,setter로 접근해야함
// 추가적인 메서드를 작성 가능
}
- 새로 추가된 생성자는 반드시 record 정의에 의해 자동 추가되는 생성자를
this를 이용하여 호출하여야 함
public record Person(String name, int age) {
// 추가 생성자
public Person(String name) {
// 기본 생성자 호출 (name, 0)
this(name, 0);
}
}
record pattern
레코드의 멤버 변수를 지역 변수 추출
// 기본 레코드 패턴 매칭
if(obj instanceof Point(double x, double y))
return x + y;
else
return 0d;
// String 타입의 Pair 레코드 패턴 매칭
if(obj instanceof Pair<String>(String x, String y))
return x + "," + y;
else
return "";
중첩 record 패턴 매칭
if (obj instanceof ColoredPoint(Point(int x, int y), Color c)) {
// x, y는 Point의 멤버 변수
// c는 ColoredPoint의 멤버 변수
return "x: " + x + ", y: " + y + ", color: " + c;
}
// 더 깊은 중첩도 가능
if (obj instanceof Triple(Pair(String first, String last), Integer age, Boolean active)) {
return first + " " + last + " is " + age + " years old";
}
이름 없는 _를 이용한 패턴 매칭
if(obj instanceof test(double x, _))
return x;
Sealed class
- 상속을 못하는 클래스
- final, sealed, non-sealed 중 하나로 수식해야함
final
: 해당 클래스는 더 이상 상속할 수 없습니다.sealed
: 다른 클래스가 상속할 수 있지만, 그 자식 클래스를 또 제한할 수 있습니다.non-sealed
: 다른 클래스가 자유롭게 상속할 수 있습니다.
'Language > JAVA' 카테고리의 다른 글
[Java] Object 클래스 (0) | 2024.12.03 |
---|---|
[Java] 내부 클래스, 중첩클래스 (0) | 2024.12.03 |
[Java] 인터페이스 (0) | 2024.12.03 |