{"id":326558,"date":"2023-02-23T05:24:25","date_gmt":"2023-02-23T04:24:25","guid":{"rendered":"https:\/\/blog.jetbrains.com\/?post_type=idea&#038;p=326558"},"modified":"2023-02-23T05:24:28","modified_gmt":"2023-02-23T04:24:28","slug":"java-19-and-intellij-idea","status":"publish","type":"idea","link":"https:\/\/blog.jetbrains.com\/ko\/idea\/2023\/02\/java-19-and-intellij-idea\/","title":{"rendered":"Java 19\uc640 IntelliJ IDEA"},"content":{"rendered":"<p>Java\ub294 \uadf8 \uc5b4\ub290 \ub54c\ubcf4\ub2e4 \ud65c\uae30\ub97c \ub760\uace0 \uc788\uc2b5\ub2c8\ub2e4. \ub9b4\ub9ac\uc2a4 \uc8fc\uae30\uac00 \uc9e7\uc544\uc838 6\uac1c\uc6d4\ub9c8\ub2e4 \uc0c8\ub85c\uc6b4 \uc5b8\uc5b4 \ub610\ub294 \ud50c\ub7ab\ud3fc \uae30\ub2a5\uc744 \uc2dc\ud5d8\ud574 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. IntelliJ IDEA\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \uc0c8\ub85c\uc6b4 \uae30\ub2a5\uc744 \ubd80\ub2f4 \uc5c6\uc774 \uc54c\uc544\ubcf4\uace0 \uc0ac\uc6a9\ud574\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774 \ube14\ub85c\uadf8 \uae00\uc5d0\uc11c\ub294 Java 19\uc758 \uc5b8\uc5b4 \uae30\ub2a5\uc778 <a href=\"https:\/\/openjdk.org\/jeps\/405\" target=\"_blank\" rel=\"noreferrer noopener\">\ub808\ucf54\ub4dc \ud328\ud134<\/a> \ubc0f <a href=\"https:\/\/openjdk.org\/jeps\/427\" target=\"_blank\" rel=\"noreferrer noopener\">switch\uc6a9 \ud328\ud134 \uc77c\uce58(3\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804)<\/a>\uc5d0\ub9cc \ud55c\uc815\ud558\uc5ec \ub2e4\ub8e8\uaca0\uc2b5\ub2c8\ub2e4. \ud14c\uc2a4\ud2b8 \ubc84\uc804 API\uc778 <a href=\"https:\/\/openjdk.org\/jeps\/425\" target=\"_blank\" rel=\"noopener\">\uac00\uc0c1 \uc2a4\ub808\ub4dc<\/a>\uc640 \uac19\uc740 \ub2e4\ub978 Java 19 \uae30\ub2a5\uc740 \uc758\ub3c4\uc801\uc73c\ub85c \ub2e4\ub8e8\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4. IntelliJ IDEA\ub294 \uac00\uc0c1 \uc2a4\ub808\ub4dc\uc5d0 \ub300\ud55c \uae30\ubcf8 \uad6c\ubb38 \uac15\uc870 \ud45c\uc2dc\ub97c \uc9c0\uc6d0\ud558\uba70, IDEA \ud300\uc740 <a href=\"https:\/\/youtrack.jetbrains.com\/issue\/IDEA-301409\/Support-virtual-threads-project-loom\" target=\"_blank\" rel=\"noopener\">\ub514\ubc84\uac70 \ubc0f \ud504\ub85c\ud30c\uc77c\ub7ec<\/a>\uc5d0\uc11c \uac00\uc0c1 \uc2a4\ub808\ub4dc\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc744 \ucd94\uac00\ud558\uae30 \uc704\ud574 \uc791\uc5c5 \uc911\uc785\ub2c8\ub2e4.<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p>\ub808\ucf54\ub4dc \ud328\ud134\uc740 \ub808\ucf54\ub4dc \uad6c\uc131 \uc694\uc18c\uc5d0 \ub300\ud55c \uc561\uc138\uc2a4\ub97c \ub2e8\uc21c\ud654\ud569\ub2c8\ub2e4. \uc778\uc2a4\ud134\uc2a4\uac00 \ub808\ucf54\ub4dc\uc758 \uad6c\uc870\uc640 \uc77c\uce58\ud560 \ub54c \ub808\ucf54\ub4dc\uc758 \uad6c\uc131 \uc694\uc18c \uac12\uc744 \ubcc0\uc218 \uc9d1\ud569\uc73c\ub85c \ucd94\ucd9c\ud558\ub294 \uae30\ub2a5\uc778 \ub808\ucf54\ub4dc <i>\uad6c\uc870 \ubd84\ud574<\/i>\uc640 \ub808\ucf54\ub4dc \ud328\ud134\uc744 \ube44\uad50\ud574\ubcf4\uc138\uc694. \ucc98\uc74c\uc5d0\ub294 \ud070 \ucc28\uc774\uac00 \ubcf4\uc774\uc9c0 \uc54a\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \ub808\ucf54\ub4dc \ud328\ud134\uc744 switch \ubc0f sealed \ud074\ub798\uc2a4\uc758 \ud328\ud134 \uc77c\uce58\uc640 \uac19\uc740 \ub2e4\ub978 \uc5b8\uc5b4 \uae30\ub2a5\uacfc \uacb0\ud569\ud558\uba74 \uc0dd\uac01\ud558\uc9c0 \ubabb\ud55c \uacb0\uacfc\uc5d0 \ub180\ub77c\uac8c \ub420 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>switch \ud328\ud134 \uc77c\uce58\ub294 switch \ubb38\uacfc switch \uc2dd\uc758 case \ub77c\ubca8\uc5d0 \ud328\ud134\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. switch\uc640 \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc120\ud0dd\uc790 \ud45c\ud604\uc2dd\uc758 \ud0c0\uc785\uc740 \ubaa8\ub4e0 \ucc38\uc870 \uac12\uc73c\ub85c \ud655\uc7a5\ub429\ub2c8\ub2e4. \ub610\ud55c case \ub77c\ubca8\uc740 \ub354 \uc774\uc0c1 \uc0c1\uc218 \uac12\uc73c\ub85c \uc81c\ud55c\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. if-else \ubb38 \uccb4\uc778\uc740 switch\ub85c \ub300\uccb4\ub418\uc5b4 \ucf54\ub4dc \uac00\ub3c5\uc131\uc774 \ud5a5\uc0c1\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 switch\uc6a9 \ud328\ud134 \uc77c\uce58\uc758 3\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc5d0 \uc18c\uac1c\ub41c \ubcc0\uacbd \uc0ac\ud56d\uc744 \ub2e4\ub8f9\ub2c8\ub2e4.<\/p>\n<p><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/Blog_Featured_image_1280x600-9.png\" alt=\"\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p>Java 19 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d IntelliJ IDEA\ub97c \uad6c\uc131\ud558\ub294 \ubc29\ubc95\ubd80\ud130 \uc2dc\uc791\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"IntelliJ_IDEA_Configuration\" class=\"ez-toc-section\"><\/span><strong>IntelliJ IDEA \uad6c\uc131<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>Java 19\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc740 IntelliJ IDEA 2022.3\uc5d0\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud5a5\ud6c4 IntelliJ IDEA \ub9b4\ub9ac\uc2a4\uc5d0\uc11c \ub354 \ub9ce\uc740 \uc9c0\uc6d0\uc774 \uc81c\uacf5\ub420 \uc608\uc815\uc785\ub2c8\ub2e4. Java 19\uc5d0\uc11c switch \ud328\ud134 \uc77c\uce58\ub97c \uc0ac\uc6a9\ud558\ub824\uba74 <i>Project Settings(\ud504\ub85c\uc81d\ud2b8 \uc124\uc815) | Project(\ud504\ub85c\uc81d\ud2b8)<\/i>\ub85c \uc774\ub3d9\ud558\uc5ec <i>Project SDK<\/i>\ub97c 19\ub85c \uc124\uc815\ud558\uace0 <i>Project language level(\ud504\ub85c\uc81d\ud2b8 \uc5b8\uc5b4 \uc218\uc900)<\/i>\uc744 &#8217;19 (Preview) \u2013 Record patterns, pattern matching for switch (third preview)'(19(\ud14c\uc2a4\ud2b8 \ubc84\uc804) &#8211; \ub808\ucf54\ub4dc \ud328\ud134, switch \ud328\ud134 \uc77c\uce58(3\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804))\ub85c \uc124\uc815\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/config1.png\" alt=\"\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p>\uc774\ubbf8 \uc2dc\uc2a4\ud15c\uc5d0 \ub2e4\uc6b4\ub85c\ub4dc\ud55c \uc784\uc758 \ubc84\uc804\uc758 JDK\ub97c \uc0ac\uc6a9\ud558\uac70\ub098 <i>&#8216;Edit'(\ud3b8\uc9d1)<\/i>\uc744 \ud074\ub9ad\ud55c \ub2e4\uc74c <i>&#8216;Add SDK &gt;'(SDK \ucd94\uac00)<\/i>\ub97c \uc120\ud0dd\ud558\uace0 <i>&#8216;Download JDK&#8230;'(JDK \ub2e4\uc6b4\ub85c\ub4dc)<\/i>\ub97c \uc120\ud0dd\ud558\uc5ec \ub2e4\ub978 \ubc84\uc804\uc744 \ub2e4\uc6b4\ub85c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc6b4\ub85c\ub4dc\ud560 JDK \ubc84\uc804\uc740 \uacf5\uae09\uc5c5\uccb4 \ubaa9\ub85d\uc5d0\uc11c \uc120\ud0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>Modules(\ubaa8\ub4c8) \ud0ed\uc5d0\uc11c \ubaa8\ub4c8\uc5d0 \ub300\ud574 \ub3d9\uc77c\ud55c \uc5b8\uc5b4 \uc218\uc900 \uc989, <i>19 (Preview) \u2013 Record patterns, pattern matching for switch (third preview)<\/i>\uac00 \uc120\ud0dd\ub418\uc5c8\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/config2.png\" alt=\"\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p>\uc774\ub807\uac8c \uc120\ud0dd\ud558\uba74 IntelliJ IDEA\uac00 \ub2e4\uc74c \ubc84\uc804\uc5d0\uc11c Java \ud14c\uc2a4\ud2b8 \ubc84\uc804 \uc5b8\uc5b4 \uae30\ub2a5\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc744 \uc911\ub2e8\ud560 \uc218 \uc788\uc74c\uc744 \uc54c\ub9ac\ub294 \ud31d\uc5c5\uc774 \ud45c\uc2dc\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud14c\uc2a4\ud2b8 \ubc84\uc804 \uae30\ub2a5\uc740 \uc544\uc9c1 \uc601\uad6c\uc801\uc778 \uac83\uc774 \uc544\ub2c8\ubbc0\ub85c \ud5a5\ud6c4 Java \ub9b4\ub9ac\uc2a4\uc5d0\uc11c \ubcc0\uacbd\ub418\uac70\ub098 \uc81c\uac70\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\uc9c0\uae08\ubd80\ud130 \ub808\ucf54\ub4dc \ud328\ud134\uacfc \uadf8 \uc774\uc810\uc5d0 \uad00\ud574 \uc54c\uc544\ubcf4\uace0 \uc2e4\uc2b5 \uc608\uc81c\ub97c \uc0ac\uc6a9\ud574 \uc2dc\uc5f0\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:heading {\"level\":1} --><\/p>\n<h1><strong>\ub808\ucf54\ub4dc \ud328\ud134\uc774 \ud544\uc694\ud55c \uc774\uc720<\/strong><\/h1>\n<p><!-- \/wp:heading --><\/p>\n<p>\ub370\uc774\ud130\ub294 \ub300\ubd80\ubd84\uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \ud575\uc2ec\uc785\ub2c8\ub2e4. \ub370\uc774\ud130\ub97c \ucc3e\uac70\ub098 \uc758\uc0ac \uacb0\uc815\uc5d0 \ub3c4\uc6c0\uc774 \ub418\ub294 \ubc29\uc2dd\uc73c\ub85c \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud558\uae30 \uc704\ud574 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\uc2b5\ub2c8\ub2e4. \ubb3c\ub860 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ub370\uc774\ud130\ub97c \uc800\uc7a5, \uac80\uc0c9 \ub610\ub294 \ucc98\ub9ac\ud560 \uc218 \uc5c6\ub2e4\uba74 \ubd88\uac00\ub2a5\ud55c \uc598\uae30\uc785\ub2c8\ub2e4.<\/p>\n<p>\ucd5c\uadfc Java \ub9b4\ub9ac\uc2a4(\ubc84\uc804 16) \uc911 \ud558\ub098\uc5d0\uc11c \ub808\ucf54\ub4dc\uac00 Java \uc5b8\uc5b4\uc5d0 \ucd94\uac00\ub418\uc5b4 \uac1c\ubc1c\uc790\uc758 \ub370\uc774\ud130 \uc791\uc5c5\uc774 \ub354 \uc26c\uc6cc\uc84c\uc2b5\ub2c8\ub2e4. \ub808\ucf54\ub4dc\ub294 \ubd88\ubcc0\uc758 \ub370\uc774\ud130\ub97c \ubaa8\ub378\ub9c1\ud558\ub294 \ubc29\uc2dd\uc744 \ud06c\uac8c \ub2e8\uc21c\ud654\ud569\ub2c8\ub2e4. \ub9d0\ud558\uc790\uba74 \ub370\uc774\ud130\uc5d0 \ub300\ud55c \ud22c\uba85\ud55c \uce90\ub9ac\uc5b4 \ub610\ub294 \ub798\ud37c\uc758 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4. \ud55c \uc904\uc758 \ucf54\ub4dc\ub9cc \uc0ac\uc6a9\ud558\uc5ec \ub808\ucf54\ub4dc\uc640 \ud574\ub2f9 \uad6c\uc131 \uc694\uc18c\ub97c \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc608\ub97c \ub4e4\uc5b4, \ub2e4\uc74c \ud55c \uc904\uc758 \ucf54\ub4dc\ub294 \uad6c\uc131 \uc694\uc18c <code>name<\/code>\uc5d0 \ub300\ud55c String \uac12\uacfc <code>age<\/code>\uc5d0 \ub300\ud55c int \uac12\uc744 \uc800\uc7a5\ud560 \uc218 \uc788\ub294 \uc0c8 \ub808\ucf54\ub4dc <code>Person<\/code>\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">record Person (String name, int age) { }<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\ub808\ucf54\ub4dc\ub97c \uc0ac\uc6a9\ud558\uba74 \uc0c1\uc6a9\uad6c \ucf54\ub4dc\ub97c \uc791\uc131\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub429\ub2c8\ub2e4. \ub808\ucf54\ub4dc\ub294 \uc0dd\uc131\uc790\uc5d0 \ub300\ud55c \uae30\ubcf8 \uad6c\ud604, \uad6c\uc131 \uc694\uc18c\uc5d0 \ub300\ud55c \uc811\uadfc\uc790 \uba54\uc11c\ub4dc, <code>toString<\/code>, <code>equals<\/code> \ubc0f <code>hashCode<\/code>\uc640 \uac19\uc740 \uc720\ud2f8\ub9ac\ud2f0 \uba54\uc11c\ub4dc\ub97c \ubb35\uc2dc\uc801\uc73c\ub85c \uc0dd\uc131\ud569\ub2c8\ub2e4. \ub808\ucf54\ub4dc\ub97c \ub370\uc774\ud130\uc758 \ub798\ud37c\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0, \ud574\ub2f9 \uad6c\uc131 \uc694\uc18c\uc5d0 \uc561\uc138\uc2a4\ud558\ub824\uba74 \ub798\ud551\uc744 \ud574\uc81c\ud574\uc57c \ud560 \uac00\ub2a5\uc131\uc774 \ub192\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \ub808\ucf54\ub4dc <code>Person<\/code>\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc788\ub294 \uacbd\uc6b0, \ub098\uc774 \uad6c\uc131 \uc694\uc18c\ub97c \uac80\uc0ac\ud558\uc5ec \ud574\ub2f9\ud558\ub294 \uc0ac\ub78c\uc5d0\uac8c \ud22c\ud45c\ud560 \uc790\uaca9\uc774 \uc788\ub294\uc9c0 \uc5ec\ubd80\ub97c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \uc774 \ub3d9\uc791\uc744 \uc218\ud589\ud560 \uc218 \uc788\ub294 <code>isEligibleToVote<\/code>\ub77c\ub294 \uba54\uc11c\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">boolean isEligibleToVote(Object obj) {\n   if (obj instanceof Person person) {\n       return person.age() &gt;= 18;\n   }\n   return false;\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\uc55e\uc758 \uc608\uc5d0\uc11c\ub294 \ud328\ud134 \ubcc0\uc218 <code>person<\/code>\uc744 \uc120\uc5b8\ud558\ub294 instanceof\uc758 \ud328\ud134 \uc77c\uce58\ub97c \uc0ac\uc6a9\ud558\ubbc0\ub85c <code>obj<\/code>\ub97c <code>Person<\/code>\uc73c\ub85c \ubcc0\ud658\ud558\uae30 \uc704\ud574 \uc9c0\uc5ed \ubcc0\uc218\ub97c \uc0dd\uc131\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub808\ucf54\ub4dc \ud328\ud134\uc740 \ud55c \ub2e8\uacc4 \ub354 \ub098\uc544\uac11\ub2c8\ub2e4. \uc778\uc2a4\ud134\uc2a4\ub97c \ub808\ucf54\ub4dc \ud0c0\uc785 Person\uacfc \ube44\uad50\ud560 <i>\ubfd0\ub9cc \uc544\ub2c8\ub77c<\/i> \ub808\ucf54\ub4dc\uc758 \uad6c\uc131 \uc694\uc18c\uc5d0 \ub300\ud55c \ubcc0\uc218\ub97c \uc120\uc5b8\ud558\ubbc0\ub85c \ub808\ucf54\ub4dc\uc758 \uad6c\uc131 \uc694\uc18c\uc5d0 \uc561\uc138\uc2a4\ud558\uae30 \uc704\ud574 <i>\uc0ac\uc6a9\uc790<\/i>\uac00 \uc9c0\uc5ed \ubcc0\uc218\ub97c \uc815\uc758\ud558\uac70\ub098 \ud328\ud134 \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud560 \ud544\uc694\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774\ub294 \ucef4\ud30c\uc77c\ub7ec\uac00 \ub808\ucf54\ub4dc \uad6c\uc131 \uc694\uc18c\uc758 \uc815\ud655\ud55c \uc218\uc640 \ud0c0\uc785\uc744 \uc54c\uace0 \uc788\uae30 \ub54c\ubb38\uc5d0 \uac00\ub2a5\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub808\ucf54\ub4dc \ud328\ud134\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc55e\uc758 \uba54\uc11c\ub4dc\ub97c \ub2e4\uc2dc \uc791\uc131\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. instanceof \uc5f0\uc0b0\uc790 \ub610\ub294 switch case \ub77c\ubca8\uacfc \ud568\uaed8 \ub808\ucf54\ub4dc \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud558\uba74 IntelliJ IDEA\uac00 \uc774\ub97c \ud0d0\uc9c0\ud558\uc5ec \ub808\ucf54\ub4dc \ud328\ud134 \uc0ac\uc6a9\uc744 \uc81c\uc548\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:image {\"className\":\"alignnone wp-image-16062\"} --><\/p>\n<figure class=\"wp-block-image alignnone wp-image-16062\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/eligibleToVote.gif\" alt=\"\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p>\ub2e4\uc74c\uc740 \ucc38\uc870\uc6a9\uc73c\ub85c \uc218\uc815\ub41c \ucf54\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">boolean isEligibleToVote(Object obj) {\n   if (obj instanceof Person(String name, int age)) {\n       return age &gt;= 18;\n   }\n   return false;\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\uc55e\uc758 \ucf54\ub4dc\uc5d0\uc11c \ub808\ucf54\ub4dc \ud328\ud134 <code>Person(String name, int age)<\/code>\uc740 <code>person.age()<\/code> \ub300\uc2e0 \ubcc0\uc218 <code>age<\/code>\ub97c \uc0ac\uc6a9\ud588\uc744 \ubfd0\uc778 \uac83\ucc98\ub7fc \ubcf4\uc785\ub2c8\ub2e4. \uadf8\ub7ec\ub098 \uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c\uc744 \uc77d\uc73c\uba74\uc11c \ub808\ucf54\ub4dc \ud328\ud134\uc774 \ucf54\ub4dc\uc758 \uc758\ub3c4\ub97c \ub2e8\uc21c\ud654\ud558\uace0 \uac04\uacb0\ud55c \ub370\uc774\ud130 \ucc98\ub9ac \ucf54\ub4dc\ub97c \ub9cc\ub4dc\ub294 \ub370 \ub3c4\uc6c0\uc774 \ub41c\ub2e4\ub294 \uc0ac\uc2e4\uc744 \uc54c\uac8c \ub420 \uac83\uc785\ub2c8\ub2e4.<\/p>\n<p>\uc774\uc804\uc5d0 \ub808\ucf54\ub4dc\ub85c \uc791\uc5c5\ud55c \uc801\uc774 \uc5c6\uac70\ub098 \ub808\ucf54\ub4dc\uac00 \ubb34\uc5c7\uc778\uc9c0 \ub610\ub294 IntelliJ IDEA\uac00 \ub808\ucf54\ub4dc\ub97c \uc5b4\ub5bb\uac8c \uc9c0\uc6d0\ud558\ub294\uc9c0 \uc790\uc138\ud788 \uc54c\uace0 \uc2f6\ub2e4\uba74 <a href=\"https:\/\/blog.jetbrains.com\/idea\/2021\/03\/java-16-and-intellij-idea\/#Why_use_records\">\ub808\ucf54\ub4dc\uc5d0 \ub300\ud55c \uc800\uc758 \uc774\uc804 \ube14\ub85c\uadf8<\/a>\ub97c \ucc38\uc870\ud558\uc138\uc694.<\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"Named_Record_Pattern\" class=\"ez-toc-section\"><\/span><strong>\uba85\uba85\ub41c \ub808\ucf54\ub4dc \ud328\ud134<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>\ub808\ucf54\ub4dc \ud328\ud134 \ub2e4\uc74c\uc5d0 <i>\ub808\ucf54\ub4dc \ud328\ud134 \ubcc0\uc218<\/i>\uac00 \uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub7f0 \uacbd\uc6b0\uc5d0 \ub808\ucf54\ub4dc \ud328\ud134\uc744 <i>\uba85\uba85\ub41c \ub808\ucf54\ub4dc \ud328\ud134<\/i>\uc774\ub77c\uace0 \ud569\ub2c8\ub2e4(\ud655\uc815\ub418\uc9c0\ub294 \uc54a\uc558\uc9c0\ub9cc <a href=\"https:\/\/openjdk.org\/jeps\/432\" target=\"_blank\" rel=\"noopener\">Java 20\uc758 \ub808\ucf54\ub4dc \ud328\ud134 2\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804<\/a>\uc5d0\uc11c \uba85\uba85\ub41c \ub808\ucf54\ub4dc \ud328\ud134\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc774 \uc911\ub2e8\ub420 \uc218 \uc788\uc74c).<\/p>\n<p>\ub808\ucf54\ub4dc \ud328\ud134\uc740 \ud574\ub2f9 \uad6c\uc131 \uc694\uc18c\uc5d0 \ub300\ud55c \ud328\ud134 \ubcc0\uc218\ub3c4 \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uba85\uba85\ub41c \ub808\ucf54\ub4dc \ud328\ud134\uc744 \uc0ac\uc6a9\ud558\uace0 \ub808\ucf54\ub4dc \ud328\ud134 \ubcc0\uc218\ub85c \ud574\ub2f9 \uad6c\uc131 \uc694\uc18c \uc911 \ud558\ub098\uc5d0 \uc561\uc138\uc2a4\ud558\ub824\uace0 \ud558\uba74 IntelliJ IDEA\uac00 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ud574\ub2f9 \uad6c\uc131 \uc694\uc18c\uc5d0 \ud328\ud134 \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4. \uc774\ub7ec\ud55c \ucf54\ub4dc\ub294 \ub178\ub780\uc0c9 \ubc30\uacbd\uc73c\ub85c \uac15\uc870 \ud45c\uc2dc\ub429\ub2c8\ub2e4. Alt+Enter\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774 \uc81c\uc548\uc744 \ubcf4\uace0 \uc218\ub77d\ud558\uc5ec \ucf54\ub4dc\ub97c \uc218\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:image {\"className\":\"alignnone wp-image-16062\"} --><\/p>\n<figure class=\"wp-block-image alignnone wp-image-16062\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/named-record-pattern.gif\" alt=\"\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"Record_Patterns_and_nulls\" class=\"ez-toc-section\"><\/span><strong>\ub808\ucf54\ub4dc \ud328\ud134 \ubc0f null<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>\uc774\uc804 \uc139\uc158\uc758 \uba54\uc11c\ub4dc <code>isEligibleToVote<\/code> \uc608\uc2dc\ub97c \ub2e4\uc2dc \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. <code>null<\/code> \uac12\uc774 \ub2e4\uc74c \uba54\uc11c\ub4dc\uc5d0 \uc804\ub2ec\ub418\uba74 \uc5b4\ub5bb\uac8c \ub420\uae4c\uc694?<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">boolean isEligibleToVote(Object obj) {\n   if (obj instanceof Person(String name, int age)) {\n       return age &gt;= 18;\n   }\n   return false;\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>null\uc740 \ub808\ucf54\ub4dc \ud328\ud134 <code>Person(String name, int age)<\/code>\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2c8\ubbc0\ub85c <code>instanceof<\/code> \uc5f0\uc0b0\uc790\ub294 <code>false<\/code>\ub97c \ubc18\ud658\ud558\uace0 \ud328\ud134\uc740 \ubcc0\uc218 <code>name<\/code> \ubc0f <code>age<\/code>\ub294 \ucd08\uae30\ud654\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ub418\uba74 \ub808\ucf54\ub4dc \ud328\ud134\uc774 null\uc744 \ucc98\ub9ac\ud558\uace0 \uc0ac\uc6a9\uc790\uac00 not null \uac80\uc0ac\ub97c \uc815\uc758\ud560 \ud544\uc694\uac00 \uc5c6\uae30 \ub54c\ubb38\uc5d0 \ud3b8\ub9ac\ud569\ub2c8\ub2e4.<\/p>\n<p>\ud558\uc9c0\ub9cc \uad6c\uc131 \uc694\uc18c <code>name<\/code>\uc758 \uac12\uc774 null\uc774\uba74 \ud328\ud134\uc774 \uc77c\uce58\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"Nested_Record_Patterns_-_concise_code_and_clear_intent\" class=\"ez-toc-section\"><\/span><strong>\uc911\ucca9 \ub808\ucf54\ub4dc \ud328\ud134 \u2013 \uac04\uacb0\ud55c \ucf54\ub4dc\uc640 \uba85\ud655\ud55c \uc758\ub3c4<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>\ub2e4\ub978 \ub808\ucf54\ub4dc\ub97c \uc790\uc2e0\uc758 \uad6c\uc131 \uc694\uc18c\ub85c \uc815\uc758\ud558\ub294 \ub808\ucf54\ub4dc\ub294 \ud754\ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">record Name       (String fName, String lName) { }\nrecord PhoneNumber(String areaCode, String number) { }\nrecord Country    (String countryCode, String countryName) { }\nrecord Passenger  (Name name, \n                   PhoneNumber phoneNumber, \n                   Country from, \n                   Country destination) { }<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>null \uad6c\uc131 \uc694\uc18c \uac12\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub294 \ub808\ucf54\ub4dc \ud328\ud134\uc774 \uc5c6\uc73c\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 <code>Passenger<\/code> \ub808\ucf54\ub4dc\uc758 \uad6c\uc131 \uc694\uc18c \uac12(\uc608\ub97c \ub4e4\uc5b4 <code>fName<\/code> \ubc0f <code>countryCode<\/code>)\uc744 \ucc98\ub9ac\ud558\uae30 \uc704\ud574 \uba87 \uac00\uc9c0 null \ud655\uc778 \uc791\uc5c5\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">boolean checkFirstNameAndCountryCode (Object obj) {\n   if (obj != null) {\n       if (obj instanceof Passenger passenger) {\n           Name name = null;\n           Country destination = null;\n \n           if (passenger.name() != null) {\n               name = passenger.name();\n \n               if (passenger.destination() != null) {\n                   destination = passenger.destination();\n \n                   String fName = name.fName();\n                   String countryCode = destination.countryCode();\n \n                   if (fName != null &amp;&amp; countryCode != null) {\n                       return fName.startsWith(\"Simo\") &amp;&amp;\n                              countryCode.equals(\"PRG\");\n                   }\n               }\n           }\n       }\n   }\n   return false;\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\ub808\ucf54\ub4dc \ud328\ud134\uc744 \uc911\ucca9\ud558\uc5ec \ub3d9\uc77c\ud55c \ub3d9\uc791\uc744 \uc218\ud589\ud560 \uc218\ub3c4 \uc788\ub294\ub370, \uc774 \uacbd\uc6b0\uc5d0\ub294 \ucf54\ub4dc\uc758 \uc758\ub3c4\ub3c4 \ud6e8\uc52c \uba85\ud655\ud574\uc9d1\ub2c8\ub2e4. \ub808\ucf54\ub4dc \uad6c\uc131 \uc694\uc18c <code>name<\/code> \ubc0f <code>destination<\/code>\uc774 null\uc774\uba74 instanceof \uac80\uc0ac\uac00 \uc2e4\ud328\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">boolean checkFirstNameAndCountryCodeAgain (Object obj) {\n   if (obj instanceof Passenger(Name (String fName, String lName),\n                                PhoneNumber phoneNumber,\n                                Country from,\n                                Country (String countryCode, String countryName) )) {\n \n       if (fName != null &amp;&amp; countryCode != null) {\n           return fName.startsWith(\"Simo\") &amp;&amp; countryCode.equals(\"PRG\");\n       }\n   }\n   return false;\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\uc55e\uc758 \uc608\uc2dc \ucf54\ub4dc\uc5d0\uc11c\uc640 \uac19\uc774 \uae30\ubcf8 \ub808\ucf54\ub4dc\uc758 \uad6c\uc131 \uc694\uc18c\uc5d0 \ub300\ud55c \ub808\ucf54\ub4dc \ud328\ud134\uc744 \uc120\ud0dd\uc801\uc73c\ub85c \ud3ec\ud568\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uc55e\uc758 \uc608\uc2dc\uc5d0\uc11c\ub294 <code>from<\/code> \uad6c\uc131 \uc694\uc18c\uc5d0 \ub808\ucf54\ub4dc \ud328\ud134\uc744 \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uace0, \uae30\ubcf8 \ub808\ucf54\ub4dc <code>Passenger<\/code>\uc758 \ub808\ucf54\ub4dc \uad6c\uc131 \uc694\uc18c \ub300\uc0c1\uc5d0 \ub808\ucf54\ub4dc \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc694\ucee8\ub300, \ub808\ucf54\ub4dc \ud328\ud134\uc744 \uc815\uc758\ud560 \ub54c \ud328\ud134 \ubcc0\uc218\ub85c \ucd94\ucd9c\ud558\uace0\uc790 \ud558\ub294 \ub0b4\uc6a9\uc744 \uc81c\uc5b4\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uae30\ub2a5\uc740 \ub370\uc774\ud130 \ucc98\ub9ac\ub97c \ub9ce\uc774 \ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ub9e4\uc6b0 \uc720\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"Using_var_with_Record_patterns\" class=\"ez-toc-section\"><\/span><strong>\ub808\ucf54\ub4dc \ud328\ud134\uacfc \ud568\uaed8 var \uc0ac\uc6a9<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>\uc774\uc804 \uc608\uc2dc\uc758 <code>checkFirstNameAndCountryCodeAgain<\/code> \uba54\uc11c\ub4dc\ub85c \ub2e4\uc2dc \ub3cc\uc544\uac00 \uc77c\ubd80 \ud328\ud134 \ubcc0\uc218\uc758 \ud0c0\uc785\uc744 <code>var<\/code>\ub85c \uc815\uc758\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">boolean checkFirstNameAndCountryCodeAgain (Object obj) {\n   if (obj instanceof Passenger(Name (String fName, var lName),\n                                var phoneNumber,\n                                Country from,\n                                Country (var countryCode, String countryName) )) {\n \n       if (fName != null &amp;&amp; countryCode != null) {\n           return fName.startsWith(\"Simo\") &amp;&amp; countryCode.equals(\"PRG\");\n       }\n   }\n   return false;\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\ubcf4\uc2dc\ub2e4\uc2dc\ud53c \uc77c\ubd80 \ub610\ub294 \ubaa8\ub4e0 \ud328\ud134 \ubcc0\uc218\uc758 \ud0c0\uc785\uc744 var\ub85c \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud0c0\uc785\uc774 \ubb34\uc5c7\uc778\uc9c0 \uad81\uae08\ud55c \uacbd\uc6b0 IntelliJ IDEA\uc5d0\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:image {\"className\":\"alignnone wp-image-16062\"} --><\/p>\n<figure class=\"wp-block-image alignnone wp-image-16062\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/using-var.gif\" alt=\"\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"Record_patterns_and_generics\" class=\"ez-toc-section\"><\/span><strong>\ub808\ucf54\ub4dc \ud328\ud134 \ubc0f \uc81c\ub124\ub9ad<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>\ub808\ucf54\ub4dc\uac00 \uc81c\ub124\ub9ad\uc774\uba74 \ud574\ub2f9 \ub808\ucf54\ub4dc \ud328\ud134\uc740 \uc81c\ub124\ub9ad \ud0c0\uc785\uc744 \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ud074\ub798\uc2a4 <code>WristWatch<\/code>\uc640 \uc81c\ub124\ub9ad \ub808\ucf54\ub4dc <code>Gift<\/code>\uc758 \uc815\uc758\ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uac00\uc815\ud574\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">class WristWatch {}\nrecord Gift&lt;T&gt;(T t) {}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\ub2e4\uc74c \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub808\ucf54\ub4dc <code>Gift<\/code>\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c <i>\ub798\ud551 \ud574\uc81c<\/i>\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud328\ud134 \ubcc0\uc218 <code>watch<\/code>\uc758 \ud0c0\uc785\uc73c\ub85c <code>var<\/code> \ub610\ub294 <code>WristWatch<\/code>\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">void unwrap(Gift&lt;WristWatch&gt; obj) {\n   if (obj instanceof Gift&lt;WristWatch&gt; (var watch)) {\n       System.out.println(watch);\n   }\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\uadf8\ub7ec\ub098 \ub2e4\uc74c \ucf54\ub4dc\ub294 \uc791\ub3d9\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">static void cannotUnwap(Gift&lt;object&gt; obj) {\n   if (obj instanceof Gift(var s)) {   \/\/ won\u2019t compile              \n   \t\/\/..\n   }\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 \ub808\ucf54\ub4dc \ud328\ud134\uacfc switch \uc2dd\uc744 \uc0ac\uc6a9\ud558\uc5ec \uac15\ub825\ud55c \uc7ac\uadc0 \uba54\uc11c\ub4dc\ub97c \ub9cc\ub4e4\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"Record_patterns_switch_expressions_and_sealed_classes\" class=\"ez-toc-section\"><\/span><strong>\ub808\ucf54\ub4dc \ud328\ud134, switch \ud45c\ud604\uc2dd \ubc0f sealed \ud074\ub798\uc2a4<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>\ub808\ucf54\ub4dc \ud328\ud134, switch \uc2dd \ubc0f sealed \ud074\ub798\uc2a4\ub97c \ud568\uaed8 \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ub97c \ucc98\ub9ac\ud558\ub294 \uac15\ub825\ud558\uba74\uc11c\ub3c4 \uac04\uacb0\ud558\uace0 \ud45c\ud604\ub825\uc774 \ud48d\ubd80\ud55c \ucf54\ub4dc\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \ub808\ucf54\ub4dc <code>Point<\/code>, <code>Line<\/code>, <code>Triangle<\/code> \ubc0f <code>Square<\/code>\uc5d0 \uc758\ud574 \uad6c\ud604\ub418\ub294 sealed \uc778\ud130\ud398\uc774\uc2a4 <code>TwoDimensional<\/code>\uc758 \uc608\uc785\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">sealed interface TwoDimensional {}\nrecord Point (int x, int y) implements TwoDimensional { }\nrecord Line    ( Point start, \n                 Point end) implements TwoDimensional { }\nrecord Triangle( Point pointA, \n                 Point pointB, \n                 Point PointC) implements TwoDimensional { }\nrecord Square  ( Point pointA, \n                 Point pointB, \n                 Point PointC, \n                 Point pointD) implements TwoDimensional { }<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\ub2e4\uc74c \uba54\uc11c\ub4dc\ub294 switch \ubb38\uc744 \uc0ac\uc6a9\ud558\uc5ec <code>Line<\/code>, <code>Triangle<\/code> \ub610\ub294 <code>Square<\/code>\uc640 \uac19\uc740 2\ucc28\uc6d0 \ud615\uc0c1\uc5d0\uc11c \ubaa8\ub4e0 \ud3ec\uc778\ud2b8\uc758 <code>x<\/code> \ubc0f <code>y<\/code> \uc88c\ud45c \ud569\uacc4\ub97c \ubc18\ud658\ud558\ub294 \uc7ac\uadc0 \uba54\uc11c\ub4dc \ud504\ub85c\uc138\uc2a4\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">static int process(TwoDimensional twoDim) {\n   return switch (twoDim) {\n       case Point(int x, int y) -&gt; x + y;\n       case Line(Point a, Point b) -&gt; process(a) + process(b);\n       case Triangle(Point a, Point b, Point c) -&gt; \n                                 process(a) + process(b) + process(c);\n       case Square(Point a, Point b, Point c, Point d) -&gt; \n                                 process(a) + process(b) + process(c) + process(d);\n   };\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>IntelliJ IDEA\ub294 \ub610\ud55c \uc774 \uba54\uc11c\ub4dc\uc758 \uc5ec\ubc31\uc5d0 \uc7ac\uadc0 \ud638\ucd9c \uc544\uc774\ucf58\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:image --><\/p>\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/recursion.png\" alt=\"\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"Record_patterns_in_Java_20\" class=\"ez-toc-section\"><\/span><strong>Java 20\uc758 \ub808\ucf54\ub4dc \ud328\ud134<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>Java 20\uc5d0\uc11c\ub294 \ud604\uc7ac &#8216;\ubaa9\ud45c\ub85c \uc81c\uc548\ub428&#8217; \uc0c1\ud0dc\uc5d0 \uc788\ub294 <a href=\"https:\/\/openjdk.org\/jeps\/432\" target=\"_blank\" rel=\"noopener\">\ub808\ucf54\ub4dc \ud328\ud134 2\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804<\/a>\uc774 \uac1c\uc120\ub420 \uc608\uc815\uc785\ub2c8\ub2e4. \uc81c\ub124\ub9ad \ub808\ucf54\ub4dc \ud328\ud134\uc758 \uc778\uc218\uc5d0 \ub300\ud55c \ud0c0\uc785 \ucd94\ub860\uc744 \uc9c0\uc6d0\ud558\ub294 \uac83 \uc678\uc5d0\ub3c4 \ud5a5\uc0c1\ub41c <code>for<\/code> \ubb38\uc758 \ub808\ucf54\ub4dc \ud328\ud134 \uc9c0\uc6d0\ub3c4 \uc5b8\uae09\ub429\ub2c8\ub2e4. \ud328\ud134 \uc77c\uce58\ub294 \ud655\uc2e4\ud788 \uc77c\uc0c1\uc801\uc778 \ucf54\ub529\uc744 \ubcc0\ud654\uc2dc\ud0a4\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:heading {\"level\":1} --><\/p>\n<h1><strong>switch \ud328\ud134 \uc77c\uce58 \u2013 3\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804<\/strong><\/h1>\n<p><!-- \/wp:heading --><\/p>\n<p>Java 17\uc5d0\uc11c \ud14c\uc2a4\ud2b8 \ubc84\uc804 \uc5b8\uc5b4 \uae30\ub2a5\uc73c\ub85c \ub3c4\uc785\ub41c switch \ud328\ud134 \uc77c\uce58\ub294 Java 19\uc5d0\uc11c 3\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc774 \ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774 \uc8fc\uc81c\ub97c \ucc98\uc74c \uc811\ud558\uac70\ub098 \uc5b4\ub5a4 \ub0b4\uc6a9\uc774 \ub2e4\ub904\uc9c0\ub294\uc9c0 \ub610\ub294 IntelliJ IDEA\uac00 \uc774\ub97c \uc5b4\ub5bb\uac8c \uc9c0\uc6d0\ud558\ub294\uc9c0 \uc790\uc138\ud788 \uc54c\uace0 \uc2f6\ub2e4\uba74 \uc800\uc758 \uc790\uc138\ud55c \uc124\uba85\uc774 \ub2f4\uae34 <a href=\"https:\/\/blog.jetbrains.com\/idea\/2021\/09\/java-17-and-intellij-idea\/#What_is_pattern_matching\">\uc774 \ube14\ub85c\uadf8 \uac8c\uc2dc\ubb3c<\/a>\uc744 \ucc38\uc870\ud558\uc138\uc694. \ud328\ud134 \uc77c\uce58, instanceof \ud328\ud134 \uc77c\uce58, \uadf8\ub9ac\uace0 switch \ud328\ud134 \uc77c\uce58\uac00 \ubb34\uc5c7\uc778\uc9c0\ubd80\ud130 \uc790\uc138\ud788 \uc18c\uac1c\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc5ec\uae30\uc5d0\uc11c\ub294 Java 18\uc758 2\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804 \ub300\ube44 \ub2ec\ub77c\uc9c4 switch \ud328\ud134 \uc77c\uce58\uc758 \ubcc0\uacbd \uc0ac\ud56d\uc744 \ub2e4\ub8e8\uaca0\uc2b5\ub2c8\ub2e4. switch \ube14\ub85d\uc5d0\uc11c when \uc808\uc744 \uc0ac\uc6a9\ud558\ub294 \uccab \ubc88\uc9f8 \ubcc0\uacbd \uc0ac\ud56d\ubd80\ud130 \uc2dc\uc791\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"Replacing_guarded_patterns_with_when_in_switch_blocks\" class=\"ez-toc-section\"><\/span><strong>\ubcf4\ud638\ub41c \ud328\ud134\uc744 switch \ube14\ub85d\uc758 when\uc73c\ub85c \ub300\uccb4<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>\uc544\ub798\uc640 \uac19\uc774 \uc815\uc758\ub41c Pollution, AirPollution, Deforestation \ub4f1 \uc77c\ub828\uc758 \ud074\ub798\uc2a4\ub97c \uc0dd\uac01\ud574 \ubcf4\uc138\uc694.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">class Pollution { }\nclass AirPollution extends Pollution {\n   public int getAQI() {\n       return 100;\n   }\n}\nclass Deforestation {\n   public int getTreeDamage() {\n       return 300;\n   }\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>switch \ud328\ud134 \uc77c\uce58\uc758 \uc774\uc804 \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc744 \uc0ac\uc6a9\ud560 \ub54c\ub294 \ubcf4\ud638\ub41c \ud328\ud134, \uc989 &amp;&amp;\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc870\uac74\uc744 \uc815\uc758\ud558\ub294 \uc2dd\uc73c\ub85c case \ub77c\ubca8\uc5d0 \uc870\uac74\uc744 \ucd94\uac00\ud560 \uc218 \uc788\uc5c8\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c \ucf54\ub4dc\ub294 switch \ud328\ud134 \uc77c\uce58\uc640 \ubcf4\ud638\ub41c \ud328\ud134 &amp;&amp; airPol.getAQI() &gt; 200\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc774 switch\uac00 \uac12 500\uc744 \ubc18\ud658\ud558\ub294 <code>AirPollution<\/code>\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \ub354\uc6b1 \uad6c\uccb4\ud654\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">public class MyEarth {\n   int getDamage(Object obj) {\n       return switch (obj) {\n           case AirPollution airPol &amp;&amp; airPol.getAQI() &gt; 200 -&gt; 500;\n           case Deforestation def -&gt; def.getTreeDamage();\n           case null, default -&gt; -1;\n       };\n   }\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>switch \ud328\ud134 \uc77c\uce58\uc758 \uc774 3\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc5d0\uc11c\ub294 \ubcf4\ud638\ub41c \ud328\ud134\uc774 when\uc73c\ub85c \ub300\uccb4\ub418\uc5c8\uc2b5\ub2c8\ub2e4. SQL \ucffc\ub9ac\ub85c \uc791\uc5c5\ud55c \uacbd\ud5d8\uc774 \uc788\ub2e4\uba74 \uc27d\uac8c \uc774\ud574\ub418\uc2e4 \uac81\ub2c8\ub2e4. \uc55e\uc758 \uc608\uc81c\ub97c \ub2e4\uc2dc \uc791\uc131\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">public class MyEarth {\n   int getDamage(Object obj) {\n       return switch (obj) {\n           case AirPollution airPol when airPol.getAQI() &gt; 200 -&gt; 500;\n           case Deforestation def -&gt; def.getTreeDamage();\n           case null, default -&gt; -1;\n       };\n   }\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"New_inspections_-_Push_down_for_switch_expressions\" class=\"ez-toc-section\"><\/span><strong>\uc0c8\ub85c\uc6b4 \uac80\uc0ac \u2013 &#8216;switch&#8217; \uc2dd\uc744 \uc544\ub798\ub85c \uc774\ub3d9<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>IntelliJ IDEA\uc5d0 \uc0c8\ub85c\uc6b4 \uac80\uc0ac Push down for \u2018switch\u2019 expressions(&#8216;switch&#8217; \uc2dd\uc744 \uc544\ub798\ub85c \uc774\ub3d9)\ub97c \ucd94\uac00\ud558\uc5ec \uacc4\uc0b0\uacfc \uadf8 \ubd80\uc218 \ud6a8\uacfc\ub97c \ucd94\uac00\ub85c \ubd84\ub9ac\ud558\ub294 \ub370 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \ubc29\uc2dd\uc73c\ub85c switch \uc2dd\uc744 \uc27d\uac8c \uc218\uc815\ud560 \uc218 \uc788\uac8c \ud588\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \ub2e4\uc74c \ucf54\ub4dc\ub97c \uc0dd\uac01\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">void printObject(Object obj) {\n   if (obj instanceof String s) {\n       System.out.println(\"String: \"\" + s + \"\"\");\n   } else if (obj instanceof Collection&lt;?&gt; c) {\n       System.out.println(\"Collection (size = \" + c.size() + \")\");\n   } else {\n       System.out.println(\"Other object: \" + obj);\n   }\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\uccab \ubc88\uc9f8 \ub2e8\uacc4\ub85c IntelliJ IDEA\uc758 \uac80\uc0ac Replace \u2018if\u2019 with \u2018switch\u2019(&#8216;if&#8217;\ub97c &#8216;switch&#8217;\ub85c \ubc14\uafb8\uae30)\ub97c \uc801\uc6a9\ud558\uc5ec \ub2e4\uc74c \ucf54\ub4dc\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">void printObject(Object obj) {\n   switch (obj) {\n       case String s -&gt; System.out.println(\"String: \"\" + s + \"\"\");\n       case Collection&lt;?&gt; c -&gt; \n            System.out.println(\"Collection (size = \" + c.size() + \")\");\n       case null, default -&gt; System.out.println(\"Other object: \" + obj);\n   }\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\uac01 switch \ub77c\ubca8\uc5d0\ub294 System.out.println()\uc5d0 \ub300\ud55c \ud638\ucd9c\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc81c IntelliJ IDEA\uc758 \uac80\uc0ac &#8216;Push down for &#8216;switch&#8217; expression&#8217;\uc744 \uc801\uc6a9\ud558\uc5ec \ub2e4\uc74c \ucf54\ub4dc\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">void printObject(Object obj) {\n   System.out.println(switch (obj) {\n       case String s -&gt; \"String: \"\" + s + \"\"\";\n       case Collection&lt;?&gt; c -&gt; \"Collection (size = \" + c.size() + \")\";\n       case null, default -&gt; \"Other object: \" + obj;\n   });\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c, \ubcc0\uc218\ub97c \ucd94\ucd9c\ud558\uc5ec \uacc4\uc0b0\uacfc \ubd80\uc218 \ud6a8\uacfc\ub97c \ubd84\ub9ac\ud558\uace0 \ub2e4\uc74c \ucf54\ub4dc\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:code --><\/p>\n<pre class=\"EnlighterJSRAW\">void printObject(Object obj) {\n   final var representation = switch (obj) {\n       case String s -&gt; \"String: \"\" + s + \"\"\";\n       case Collection&lt;?&gt; c -&gt; \"Collection (size = \" + c.size() + \")\";\n       case null, default -&gt; \"Other object: \" + obj;\n   };\n   System.out.println(representation);\n}<\/pre>\n<p><!-- \/wp:code --><\/p>\n<p>\ub2e4\uc74c gif\ub294 \uc704\uc758 \ub2e8\uacc4\ub97c \ubaa8\ub450 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<\/p>\n<p><!-- wp:image {\"className\":\"alignnone wp-image-16062\"} --><\/p>\n<figure class=\"wp-block-image alignnone wp-image-16062\"><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2022\/11\/push-down-switch-2.gif\" alt=\"\" \/><\/figure>\n<p><!-- \/wp:image --><\/p>\n<p><!-- wp:heading {\"level\":2} --><\/p>\n<h2><span id=\"Pattern_Matching_for_switch_in_Java_20\" class=\"ez-toc-section\"><\/span><strong>Java 20\uc758 switch \ud328\ud134 \uc77c\uce58<\/strong><\/h2>\n<p><!-- \/wp:heading --><\/p>\n<p>Java 20\uc5d0\uc11c\ub294 \ud604\uc7ac &#8216;\ubaa9\ud45c\ub85c \uc81c\uc548\ub428&#8217; \uc0c1\ud0dc\uc5d0 \uc788\ub294 <a href=\"https:\/\/openjdk.org\/jeps\/433\" target=\"_blank\" rel=\"noopener\">switch \ud328\ud134 \uc77c\uce58 4\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804<\/a>\uc744 \ud1b5\ud574 \ub354 \ub9ce\uc740 \ubcc0\uacbd \uc0ac\ud56d\uc774 \ucd94\uac00\ub420 \uc608\uc815\uc785\ub2c8\ub2e4. switch \ub77c\ubca8\uc758 \ubb38\ubc95\uc744 \ub2e8\uc21c\ud654\ud558\ub294 \uac83 \uc678\uc5d0\ub3c4 \uc5ec\ub7ec \uac00\uc9c0 \ub2e4\ub978 \ubcc0\uacbd \uc0ac\ud56d\uc774 \ud3ec\ud568\ub429\ub2c8\ub2e4.<\/p>\n<p><!-- wp:heading {\"level\":1} --><\/p>\n<h1><strong>\ud14c\uc2a4\ud2b8 \ubc84\uc804 \uae30\ub2a5<\/strong><\/h1>\n<p><!-- \/wp:heading --><\/p>\n<p>Java\uc758 \uc0c8\ub85c\uc6b4 \ub9b4\ub9ac\uc2a4 \uc8fc\uae30\uac00 6\uac1c\uc6d4\ub85c \ube68\ub77c\uc9c0\uba74\uc11c \uc0c8\ub85c\uc6b4 \uc5b8\uc5b4 \uae30\ub2a5\uc774 \ud14c\uc2a4\ud2b8 \ubc84\uc804 \uae30\ub2a5\uc73c\ub85c \ub9b4\ub9ac\uc2a4\ub429\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uae30\ub2a5\uc740 \uc774\ud6c4 Java \ubc84\uc804\uc5d0\uc11c \ubcc0\uacbd\ub418\uac70\ub098 \ubcc0\uacbd \uc5c6\uc774 2\ucc28 \ub610\ub294 3\ucc28 \ud14c\uc2a4\ud2b8 \ubc84\uc804\uc73c\ub85c \ub2e4\uc2dc \ub3c4\uc785\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucda9\ubd84\ud788 \uc548\uc815\ud654\ub41c \uae30\ub2a5\uc740 \ud45c\uc900 \uc5b8\uc5b4 \uae30\ub2a5\uc73c\ub85c Java\uc5d0 \ucd94\uac00\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud14c\uc2a4\ud2b8 \ubc84\uc804 \uc5b8\uc5b4 \uae30\ub2a5\uc740 \uc644\uc804\ud558\uc9c0\ub9cc \ud655\uc815\ub41c \uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4. \uc989, \uae30\ubcf8\uc801\uc73c\ub85c \uc774\ub7ec\ud55c \uae30\ub2a5\uc740 \uac1c\ubc1c\uc790\uac00 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc9c0\ub9cc \uac1c\ubc1c\uc790\uc758 \ud53c\ub4dc\ubc31\uc5d0 \ub530\ub77c \ud5a5\ud6c4 Java \ub9b4\ub9ac\uc2a4\uc5d0\uc11c \uc138\ubd80\uc801\uc778 \ubd80\ubd84\uc774 \ubcc0\uacbd\ub420 \uc5ec\uc9c0\uac00 \uc788\uc2b5\ub2c8\ub2e4. API\uc640 \ub2ec\ub9ac \uc548\uc815\ud654\ub41c \uc5b8\uc5b4 \uae30\ub2a5\uc740 \ud5a5\ud6c4 \uc9c0\uc6d0 \uc911\ub2e8\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub530\ub77c\uc11c \ud14c\uc2a4\ud2b8 \ubc84\uc804 \uc5b8\uc5b4 \uae30\ub2a5\uc5d0 \ub300\ud55c \ud53c\ub4dc\ubc31\uc774 \uc788\uc73c\uba74 <a href=\"https:\/\/mail.openjdk.java.net\/mailman\/listinfo\/amber-dev\" target=\"_blank\" rel=\"noopener\">JDK \uba54\uc77c\ub9c1 \ub9ac\uc2a4\ud2b8<\/a>(\ubb34\ub8cc \ub4f1\ub85d \ud544\uc694)\uc5d0\uc11c \uc790\uc720\ub86d\uac8c \uacf5\uc720\ud574 \uc8fc\uc138\uc694.<\/p>\n<p>\uc774\ub7ec\ud55c \uae30\ub2a5\uc774 \uc791\ub3d9\ud558\ub294 \ubc29\uc2dd \ub54c\ubb38\uc5d0 IntelliJ IDEA\ub294 \ud604\uc7ac JDK\uc758 \ud14c\uc2a4\ud2b8 \ubc84\uc804 \uae30\ub2a5\ub9cc \uc9c0\uc6d0\ud558\uae30 \uc704\ud574 \ub178\ub825\ud569\ub2c8\ub2e4. \ud14c\uc2a4\ud2b8 \ubc84\uc804 \uc5b8\uc5b4 \uae30\ub2a5\uc740 \ud3d0\uae30\ub418\uac70\ub098 \ud45c\uc900 \uc5b8\uc5b4 \uae30\ub2a5\uc73c\ub85c \ucd94\uac00\ub420 \ub54c\uae4c\uc9c0 Java \ubc84\uc804\uc744 \uac70\uce58\uba74\uc11c \ubcc0\uacbd\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\uc804 \ub9b4\ub9ac\uc2a4\uc758 Java SE \ud50c\ub7ab\ud3fc\uc5d0\uc11c \uc81c\uacf5\ud558\ub294 \ud14c\uc2a4\ud2b8 \ubc84\uc804 \uc5b8\uc5b4 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud558\ub294 \ucf54\ub4dc\ub294 \ucd5c\uc2e0 \ub9b4\ub9ac\uc2a4\uc5d0\uc11c \ucef4\ud30c\uc77c\ub418\uac70\ub098 \uc2e4\ud589\ub418\uc9c0 \uc54a\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 Java 12\uc758 Switch \uc2dd\uc740 \ube0c\ub79c\uce58\uc5d0\uc11c \uac12\uc744 \ubc18\ud658\ud558\uae30 \uc704\ud574 break\ub97c \uc0ac\uc6a9\ud558\ub3c4\ub85d \ub9b4\ub9ac\uc2a4\ub418\uc5c8\uc73c\ub098 \uc774\ub294 \ub098\uc911\uc5d0 yield\ub85c \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4. Switch \uc2dd\uc5d0\uc11c \uac12\uc744 \ubc18\ud658\ud558\uae30 \uc704\ud574 break\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\uc2dd\uc5d0 \ub300\ud55c \uc9c0\uc6d0\uc740 IntelliJ IDEA\uc5d0\uc11c \uc774\ubbf8 \uc911\ub2e8\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n<p><!-- wp:heading {\"level\":1} --><\/p>\n<h1><strong>\uc694\uc57d<\/strong><\/h1>\n<p><!-- \/wp:heading --><\/p>\n<p>IntelliJ IDEA\ub294 \uc0c8\ub85c\uc6b4 Java \uae30\ub2a5\uc744 \uc9c0\uc6d0\ud560 \ubfd0\ub9cc \uc544\ub2c8\ub77c \uae30\uc874 \uc778\ud150\uc158\uacfc \uac80\uc0ac\uac00 \uc774\ub7ec\ud55c \uae30\ub2a5\uacfc \uc6d0\ud65c\ud558\uac8c \uc791\ub3d9\ud558\ub3c4\ub85d \ubcf4\uc7a5\ud569\ub2c8\ub2e4.<\/p>\n<p>IntelliJ IDEA 2022.3\uc740 \ub808\ucf54\ub4dc \ud328\ud134\uc744 \uc9c0\uc6d0\ud558\uace0 switch \ud328\ud134 \uc77c\uce58 \uc9c0\uc6d0\uc744 \uac15\ud654\ud569\ub2c8\ub2e4. \ub354 \ub9ce\uc740 \uc9c0\uc6d0\uc744 \uc704\ud55c \uc791\uc5c5\uc774 \uc9c4\ud589 \uc911\uc785\ub2c8\ub2e4. IntelliJ IDEA\ub294 sealed \ud074\ub798\uc2a4 \ubc0f \uc778\ud130\ud398\uc774\uc2a4, \ub808\ucf54\ub4dc, instanceof \ud328\ud134 \uc77c\uce58 \ubc0f \ud14d\uc2a4\ud2b8 \ube14\ub85d\uacfc \uac19\uc740 Java\uc758 \ucd5c\uadfc \ucd94\uac00 \uae30\ub2a5\uc744 \uc644\ubcbd\ud558\uac8c \uc9c0\uc6d0\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc5ec\ub7ec\ubd84\uc758 \uc758\uacac\uc744 \uaf2d \ub4e4\ub824\uc8fc\uc138\uc694. IntelliJ IDEA\uc5d0\uc11c \uc774\ub7ec\ud55c \uae30\ub2a5 \uc9c0\uc6d0\uc5d0 \ub300\ud55c \ud53c\ub4dc\ubc31\ub3c4 \uaf2d \uc804\ud574 \uc8fc\uc138\uc694.<\/p>\n<p>\uc990\uac81\uac8c \uac1c\ubc1c\ud558\uc138\uc694!<\/p>\n<p><!-- \/wp:paragraph --><\/p>\n<p><em>\uac8c\uc2dc\ubb3c \uc6d0\ubb38 \uc791\uc131\uc790<\/em><\/p>\n\n<!-- wp:acf\/author-block {\"name\":\"acf\/author-block\",\"data\":{\"author\":921,\"_author\":\"field_60c2fd41dc714\"},\"align\":\"full\",\"mode\":\"auto\"} \/-->","protected":false},"author":964,"featured_media":301622,"comment_status":"closed","ping_status":"closed","template":"","categories":[4759],"tags":[],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/idea\/326558"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/idea"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/types\/idea"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/users\/964"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/comments?post=326558"}],"version-history":[{"count":2,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/idea\/326558\/revisions"}],"predecessor-version":[{"id":326560,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/idea\/326558\/revisions\/326560"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media\/301622"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/media?parent=326558"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/categories?post=326558"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/tags?post=326558"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ko\/wp-json\/wp\/v2\/cross-post-tag?post=326558"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}