๐๏ธ Java11๋ถํฐ 17๊น์ง ๊ธฐ๋ฅ์ ์์๋ณด์
์๋ก์ด ๋ฒ์ ๋ง๋ค, ์๋ฐ๋ ์ฝ๋๋ฅผ ๋์ฑ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ์์ฑํ ์ ์๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋์ ํ์ต๋๋ค. ๋ฒ์ 11๋ถํฐ 17๊น์ง ์๋ฐ๋ ๋ช ๊ฐ์ง ์ฃผ์ ๊ธฐ๋ฅ์ ๋์ ํ์๊ณ , ์ด ๊ธ์์ ๊ฐ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ์๊ฐํฉ๋๋ค. ๐ String class์ ์๋ก์ด ๋ฉ์๋ (Java SE 11) - isBlank(): string์ด ๋น์ด์๊ฑฐ๋ ๊ณต๋ฐฑ๋ง์ ํฌํจํ๋ฉด true, ์๋๋ฉด false. - strip(): ์ ํ๊ณผ ํํ์์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ ๋ฌธ์์ด ๋ฐํ - stripLeading(): ์ ํ์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ ๋ฌธ์์ด ๋ฐํ - stripTrailing(): ํํ์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ ๋ฌธ์์ด ๋ฐํ - repeat(int count): ๊ธฐ์กด ๋ฌธ์์ด์ ๋ฐ๋ณตํ์ฌ ๊ตฌ์ฑํ ์ ๋ฌธ์์ด ๋ฐํ ๐ ์ค์์น ๋ฌธ (Java SE 14) ๋ณด๋ค ๊ฐ๊ฒฐํ ์ค์์น ๋ฌธ์ ์์ฑํ ์ ์์ต๋๋ค. ๊ธฐ์กด์๋ ์์ ๋๋ enum ๊ฐ๋ง ์ฌ์ฉํ ์ ์์์ผ๋ฉฐ, ๋ค์์ผ๋ก ๋์ด๊ฐ๊ฒ ํ์ง ์๊ธฐ ์ํด break๋ฅผ ์ฌ์ฉํด์ผ ํ์ต๋๋ค. ์ด์ ๋, ๋ชจ๋ ๋ฐ์ดํฐ ์ ํ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, yield ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฐ๋ก ๋ฐํํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ``` private static void newStyleSwitchExpression(int month) { String season; switch (month) { case 12, 1, 2 -> season = "Winter"; case 3, 4, 5 -> season = "Spring"; case 6, 7, 8 -> season = "Summer"; case 9, 10, 11 -> season = "Autumn"; default -> season = "Invalid Month"; } System.out.println("April is in the " + season + "."); } ``` ๐ ํ ์คํธ ๋ธ๋ก (Java SE 15) ํ ์คํธ ๋ธ๋ก์ ํน์ ๋ฌธ์๋ฅผ escape๋ concatํ์ง ์๊ณ ๋ ์ฌ๋ฌ ์ค์ ๋ฌธ์์ด๊ณผ ํ ์คํธ๋ฅผ ์์ฑํ ์ ์๊ฒ ๋ง๋ญ๋๋ค. ๋ฌธ์์ด์ ํฐ๋ฐ์ดํ("")๋ก ๋ฌถ์ด์ ํ ์คํธ ๋ธ๋ก์ ๋ง๋ค ์ ์์ต๋๋ค. ``` private static String getResultAsJson() { return """ { "id": 1235, "title": "Example Product", "description": "A product which is nothing like apple", "price": 549 } """; } ``` ๐ instance of ํจํด ๋งค์นญ (Java SE 16) ํจํด ๋งค์นญ์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด ํ์ ์ ๋ฐ๋ฅธ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ``` public static void processObject(Object obj) { if (obj instanceof String str) { System.out.println("Input is a string: " + str); } else if (obj instanceof Integer i) { System.out.println("Input is an integer: " + i); } else { System.out.println("Input is of unknown type"); } } ``` ๐ Records (Java SE 16) ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋จ์ํ ํด๋์ค๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ์ ์ธํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ๋๋ค. Java์์ ๋ ์ฝ๋๋ฅผ ์ ์ธํ๋ฉด ์์ฑ์, equals(), hashCode(), toString()๊ณผ ๊ฐ์ ๋ฉ์๋์ ๊ธฐ๋ณธ ๊ตฌํ์ ์ ๊ณตํ๋ ํด๋์ค๊ฐ ์ ๊ณต๋ฉ๋๋ค. ๐ Sealed classes (Java SE 17) ํด๋์ค ๋๋ ์ธํฐํ์ด์ค๋ฅผ sealed๋ก ์ ์ธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฆ, ํ์ ํด๋์ค ๋๋ ๊ตฌํ์ ๋ํ ์์ ๊ณ์ธต์ ์ ํํฉ๋๋ค. permit ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฉ๋ ํ์ ํด๋์ค๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ``` public sealed class Shape permits Circle, Rectangle { // common properties and methods of shapes } ```