Records (Java 14)
public record User(Long id, String name) {}
// equals, hashCode, toString
Switch Expressions (Java 14)
// Before
String result;
switch (day) {
case MONDAY:
case FRIDAY:
result = "Busy";
break;
case SATURDAY:
case SUNDAY:
result = "Relax";
break;
default:
result = "Normal";
}
// After
String result = switch (day) {
case MONDAY, FRIDAY -> "Busy";
case SATURDAY, SUNDAY -> "Relax";
default -> "Normal";
};
Text Blocks (Java 15)
// After
String json = """
{
"name": "John",
"age": 30
}
""";
Pattern Matching for instanceof (Java 16)
// Before
if (obj instanceof String) {
String str = (String) obj;
System.out.println(str.length());
}
// After
if (obj instanceof String str) {
System.out.println(str.length());
}
Sealed Classes (Java 17) : ์์์ ์ ํ์ ์ผ๋ก ํ์ฉ
public sealed class Shape
permits Circle, Rectangle, Triangle {}
public final class Circle extends Shape {}
public final class Rectangle extends Shape {}
public final class Triangle extends Shape {}
Virtual Threads : /
- ๋ค๋ฅธ ๊ธ์์ ํ ๋ฒ์ ์ ๋ฆฌํด์ผ๊ฒ ๋ค
Pattern Matching
// Before
if (obj instanceof String) {
String s = (String) obj;
System.out.println(s.toUpperCase());
} else if (obj instanceof Integer) {
Integer i = (Integer) obj;
System.out.println(i * 2);
}
// After
switch (obj) {
case String s -> System.out.println(s.toUpperCase());
case Integer i -> System.out.println(i * 2);
case null -> System.out.println("null");
default -> System.out.println("unknown");
}
Record Patterns
record Point(int x, int y) {}
// Pattern matching with records
if (obj instanceof Point(int x, int y)) {
System.out.println("x: " + x + ", y: " + y);
}
Sequenced Collections
// ์์๊ฐ ์๋ ์ปฌ๋ ์
์ ์ผ๊ด๋ API
List<String> list = List.of("A", "B", "C");
list.getFirst(); // "A"
list.getLast(); // "C"
list.reversed(); // [C, B, A]
// Set, Map์๋ ๋์ผํ๊ฒ ์ ์ฉ
Unnamed Patterns and Variables : ์ฌ์ฉํ์ง ์๋ ๋ณ์๋ฅผ _๋ก ํ์
| [์๋ฐ] JVM ๊ตฌ์กฐ (0) | 2025.03.27 |
|---|---|
| [์๋ฐ] ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์ (0) | 2025.03.27 |
| [JAVA] Random vs SecureRandom vs ThreadLocalRandom (0) | 2024.12.26 |
| [์๋ฐ] Collections API : TreeMap (0) | 2024.10.22 |
| [Java] Reflection (0) | 2024.01.06 |