{"id":36,"date":"2011-10-28T00:14:04","date_gmt":"2011-10-28T00:14:04","guid":{"rendered":"http:\/\/hhs1080.hosting.paran.com\/?p=36"},"modified":"2011-10-28T00:14:04","modified_gmt":"2011-10-28T00:14:04","slug":"java-%ec%96%b4%eb%85%b8%ed%85%8c%ec%9d%b4%ec%85%98annotation%ec%97%90-%ea%b4%80%ed%95%9c-%ea%b0%84%eb%9e%b5%ed%95%9c-%ec%86%8c%ea%b0%9c","status":"publish","type":"post","link":"https:\/\/blog.goorigo.com\/?p=36","title":{"rendered":"Java \uc5b4\ub178\ud14c\uc774\uc158(Annotation)\uc5d0 \uad00\ud55c \uac04\ub7b5\ud55c \uc18c\uac1c"},"content":{"rendered":"<p>Java \uc5b4\ub178\ud14c\uc774\uc158(Annotation)\uc5d0 \uad00\ud55c \uac04\ub7b5\ud55c \uc18c\uac1c<br \/>\n\uc6d0\ubcf8 :http:\/\/bioportal.weizmann.ac.il\/course\/prog2\/tutorial\/java\/javaOO\/annotations.html<\/p>\n<p>JDK 5.0 \ub9b4\ub9ac\uc988\uc5d0\ub294 \uc5b4\ub178\ud14c\uc774\uc158(annotation)\uc774\ub77c \ubd88\ub9ac\ub294 \uba54\ud0c0\ub370\uc774\ud130 \uae30\ub2a5\uc774 \ub3c4\uc785\ub418\uc5c8\ub2e4. \uc5b4\ub178\ud14c\uc774\uc158\uc740 \ucf54\ub4dc \uc870\uac01\uc758 \uc791\uc131\uc790 \uba85\uc774\ub098 \ucef4\ud30c\uc77c\ub7ec\uac00 \ud2b9\uc815 \uc624\ub958\ub97c \uc5b5\uc81c\ud558\ub3c4\ub85d \uc9c0\uc2dc\ud558\ub294 \uac83\uacfc \uac19\uc774 \ud504\ub85c\uadf8\ub7a8\uc758 \uc77c\ubd80\uac00 \uc544\ub2cc \ud504\ub85c\uadf8\ub7a8\uc5d0 \uad00\ud55c \ub370\uc774\ud130\ub97c \uc81c\uacf5\ud574 \uc900\ub2e4. \uc5b4\ub178\ud14c\uc774\uc158\uc740 \ucf54\ub4dc\uac00 \uc5b4\ub5bb\uac8c \uc218\ud589\ub418\ub294 \uac83\uc5d0\ub294 \uc544\ubb34\ub7f0 \uc601\ud5a5\uc744 \uc8fc\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<p>\uc5b4\ub178\ud14c\uc774\uc158\uc740 @\uc5b4\ub178\ud14c\uc774\uc158\uc758 \ud615\ud0dc\ub97c \uc0ac\uc6a9\ud558\uace0 \ud074\ub798\uc2a4, \ud544\ub4dc, \uba54\uc18c\ub4dc \ub4f1\uacfc \uac19\uc740 \ud504\ub85c\uadf8\ub7a8\uc758 \uc120\uc5b8\ubd80\uc5d0 \uc801\uc6a9\ud560 \uc218 \uc788\ub2e4. \uc5b4\ub178\ud14c\uc774\uc158\uc740 \uac00\uc7a5 \ucc98\uc74c\uc73c\ub85c \uadf8\ub9ac\uace0 \uc885\uc885(\uad00\ub840\uc0c1) \uadf8 \uc904\uc5d0 \ub098\ud0c0\ub098\uba70 \uc784\uc758\uc758 \uc778\uc218\ub97c \ud3ec\ud568\ud560 \uc218 \uc788\ub2e4:<br \/>\n@Author(&#8220;MyName&#8221;)<br \/>\nclass myClass() { }<br \/>\n\ud639\uc740<br \/>\n@SuppressWarnings(&#8220;unchecked&#8221;)<br \/>\nvoid MyMethod() { }<\/p>\n<p>\uc5ec\ub7ec\ubd84\ub9cc\uc758 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc815\uc758\ud558\ub294 \uac83\uc740 \uc5ec\uae30\uc5d0 \uae30\uc220\ub418\uc9c0 \uc54a\uc744 \uace0\uae09\uae30\ubc95\uc5d0 \uc18d\ud558\uc9c0\ub9cc,\ubaa8\ub4e0 \uc790\ubc14 \ud504\ub85c\uadf8\ub798\uba38\ub4e4\uc774 \uc54c\uc544\uc57c \ud558\ub294 3\uac1c\uc758 \ub0b4\uc7a5 \uc5b4\ub178\ud14c\uc774\uc158\uc774 \uc788\ub2e4: @Deprecated,@Override, \uadf8\ub9ac\uace0 @SuppressWarnings\uac00 \uadf8\uac83\uc774\ub2e4. \ub2e4\uc74c \uc608\uc81c\ub4e4\uc740 \uba54\uc18c\ub4dc\uc5d0 \uc801\uc6a9\ub41c \ubaa8\ub4e0 \uc138 \uac00\uc9c0 \ud0c0\uc785\uc758 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ubcf4\uc5ec\uc900\ub2e4:<br \/>\nimport java.util.List;<\/p>\n<p>class Food {}<br \/>\nclass Hay extends Food {}<br \/>\nclass Animal {<br \/>\nFood getPreferredFood() {<br \/>\nreturn null;<br \/>\n}<br \/>\n\/**<br \/>\n* @deprecated document why the method was deprecated<br \/>\n*\/<br \/>\n@Deprecated<br \/>\nstatic void deprecatedMethod() { }<br \/>\n}<br \/>\nclass Horse extends Animal {<br \/>\nHorse() {<br \/>\nreturn;<br \/>\n}<br \/>\n@Override<br \/>\nHay getPreferredFood() {<br \/>\nreturn new Hay();<br \/>\n}<br \/>\n@SuppressWarnings(&#8220;deprecation&#8221;)<br \/>\nvoid useDeprecatedMethod() {<br \/>\nAnimal.deprecateMethod(); \/\/deprecation warning &#8211; suppressed<br \/>\n}<br \/>\n}<\/p>\n<p>@Deprecated<br \/>\n@Deprecated \uc5b4\ub178\ud14c\uc774\uc158\uc740 \ud45c\uc2dc\ub41c \uba54\uc18c\ub4dc\uac00 \ub354 \uc774\uc0c1 \uc0ac\uc6a9\ub418\uc9c0 \ub9d0\uc544\uc57c \ud568\uc744 \uac00\ub9ac\ud0a8\ub2e4.\ucef4\ud30c\uc77c\ub7ec\ub294 \ud504\ub85c\uadf8\ub7a8\uc774 \ube44\ucd94\ucc9c(deprecated) \uba54\uc18c\ub4dc\ub098 \ud074\ub798\uc2a4 \ud639\uc740 \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud560 \ub54c\ub9c8\ub2e4 \uacbd\uace0\ub97c \ubc1c\uc0dd\uc2dc\ud0a8\ub2e4. \ud55c \uc694\uc18c\uac00 \ube44\ucd94\ucc9c\ub418\uba74 \uadf8\uac83\uc740 \uc55e\uc758 \uc608\uc81c\uc5d0 \ub098\ud0c0\ub098 \uc788\ub294 \uac83\ucc98\ub7fc\ud574\ub2f9\ub418\ub294 @deprecated \ud0dc\uadf8\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc11c\ud654 \ub418\uc5b4\uc57c \ud55c\ub2e4. \ud0dc\uadf8\ub294 \uc18c\ubb38\uc790 \u2018d\u2019\ub85c\uc2dc\uc791\ud558\uba70 \uc5b4\ub178\ud14c\uc774\uc158\uc740 \ub300\ubb38\uc790 \u2018D\u2019\ub85c \uc2dc\uc791\ud568\uc744 \uc8fc\uc758\ud558\ub77c. \uc77c\ubc18\uc801\uc73c\ub85c \uc5ec\ub7ec\ubd84\uc740 \ube44\ucd94\ucc9c \uba54\uc18c\ub4dc\uc758 \uc0ac\uc6a9\uc744 \ud53c\ud574\uc57c \ud558\uba70 \uadf8\uac83 \ub300\uc2e0 \ubb34\uc5c7\uc744 \uc0ac\uc6a9\ud574\uc57c \ud558\ub294\uc9c0\ub97c \ud655\uc778\ud574\uc57c \ud55c\ub2e4.<\/p>\n<p>@Override<br \/>\n@Override \uc5b4\ub178\ud14c\uc774\uc158\uc740 \uc694\uc18c\uac00 \uc0c1\uc704 \ud074\ub798\uc2a4\uc5d0\uc11c \uc120\uc5b8\ub41c \ud55c \uc694\uc18c\ub97c \uc624\ubc84\ub77c\uc774\ub4dc \ud560 \uac83\uc784\uc744 \ucef4\ud30c\uc77c\ub7ec\uc5d0\uac8c \uc54c\ub824\uc900\ub2e4. \uc55e\uc758 \uc608\uc81c\uc5d0\uc11c\ub294 \uc624\ubc84\ub77c\uc774\ub4dc \uc5b4\ub178\ud14c\uc774\uc158\uc774 Horse \ud074\ub798\uc2a4\uc758 getPreferredFood \uba54\uc18c\ub4dc\uac00 Animal \ud074\ub798\uc2a4\uc5d0 \uc788\ub294 \ub3d9\uc77c\ud55c \uba54\uc18c\ub4dc\ub97c \uc624\ubc84\ub77c\uc774\ub4dc\ud558\uace0\uc788\uc74c\uc744 \uac00\ub9ac\ud0a4\ub294 \ub370 \uc0ac\uc6a9\ub418\uc5c8\ub2e4. @Override\ub85c \ud45c\uc2dc\ub41c \ud55c \uba54\uc18c\ub4dc\uac00 \uc0c1\uc704 \ud074\ub798\uc2a4\uc5d0 \uc788\ub294\uba54\uc18c\ub4dc\ub97c \uc624\ubc84\ub77c\uc774\ub4dc\ud558\ub294 \ub370 \uc2e4\ud328\ud560 \uacbd\uc6b0 \ucef4\ud30c\uc77c\ub7ec\ub294 \uc5d0\ub7ec\ub97c \ubc1c\uc0dd\uc2dc\ud0a8\ub2e4.<\/p>\n<p>\uba54\uc18c\ub4dc\ub97c \uc624\ubc84\ub77c\uc774\ub4dc \ud560 \ub54c \uc774 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc0ac\uc6a9\ud558\ub3c4\ub85d \uc694\uad6c\ub418\ub294 \uac83\uc740 \uc544\ub2c8\uae30 \ub54c\ubb38\uc5d0\ud2b9\ud788 \uba54\uc18c\ub4dc\uac00 \uc624\ubc84\ub77c\uc774\ub4dc\ub41c \uba54\uc18c\ub4dc\uc758 \ub9ac\ud134 \ud0c0\uc785\uc758 \ud558\uc704 \ud0c0\uc785\uc744 \ub9ac\ud134\ud560 \ub54c \uba85\uc2dc\uc801\uc73c\ub85c\uadf8\uac83\uc744 \ub4dc\ub7ec\ub0b4\ub3c4\ub85d \uc694\uad6c\ud558\ub294 \uac83\uc774 \uc720\uc6a9\ud560 \uc218 \uc788\ub2e4. \uc774\ub7ec\ud55c \uad00\ub840\ub294 \u201c\uacf5\ubcc0 \ub9ac\ud134 \ud0c0\uc785(covariant return type)\u201d\uc774\ub77c \ubd88\ub9ac\ub294\ub370, \uc774\uc804\uc758 Food \uc778\uc2a4\ud134\uc2a4\ub97c \ub9ac\ud134\ud558\ub294Animal.getPreferredFood \uc608\uc81c\uc5d0\uc11c \uc0ac\uc6a9\ub418\uc5c8\ub2e4. Horse.getPreferredFood (Horse\uc740Animal\uc758 \ud558\uc704\ud074\ub798\uc2a4)\ub294 Hay\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \ub9ac\ud134\ud55c\ub2e4. \uc880 \ub354 \uc790\uc138\ud55c \uc815\ubcf4\ub97c \uc704\ud574\uc11c\ub294 Overriding and Hiding Methods\ub97c \ucc38\uc870\ud558\ub77c.<\/p>\n<p>@SuppressWarnings<br \/>\n@SuppressWarnings \uc5b4\ub178\ud14c\uc774\uc158\uc740 \ucef4\ud30c\uc77c\ub7ec\uac00 \ub2e4\ub974\uac8c \ubc1c\uc0dd\ub420 \ud2b9\uc815 \uacbd\uace0\ub97c \uc5b5\uc81c\ud558\ub3c4\ub85d \ud574\uc900\ub2e4. \uc774\uc804\uc758 \uc608\uc81c\uc5d0\uc11c useDeprecatedMethod\ub294 Animal\uc758 \ube44\ucd94\ucc9c \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud55c\ub2e4. \ubcf4\ud1b5 \ucef4\ud30c\uc77c\ub7ec\ub294 \uacbd\uace0\ub97c \ubc1c\uc0dd\uc2dc\ud0ac\ud14c\uc9c0\ub9cc, \uc774 \uacbd\uc6b0\uc5d0\ub294 \uadf8\uac83\uc774 \uc5b5\uc81c\ub41c\ub2e4.<br \/>\n\ubaa8\ub4e0 \ucef4\ud30c\uc77c\ub7ec \uacbd\uace0\ub294 \ud55c \uc885\ub958\uc5d0 \uc18d\ud55c\ub2e4. \uc790\ubc14 \uc5b8\uc5b4 \uba85\uc138(Java Language Specification)\ub294 \u201c\ube44\ucd94\ucc9c(deprecation)\u201d\uacfc \u201c\ube44\ud655\uc778(unchecked)\u201d\uc758 \ub450 \uac00\uc9c0 \uc885\ub958\ub97c \ub098\uc5f4\ud55c\ub2e4. \u201c\ube44\ud655\uc778\u201d \uacbd\uace0\ub294 \uc81c\ub124\ub9ad\uc774 \ub098\uc624\uae30 \uc804\uc5d0 \uc791\uc131\ub41c \ub808\uac70\uc2dc \ucf54\ub4dc\uc640 \uc778\ud130\ud398\uc774\uc2f1\ud560 \uacbd\uc6b0\uc5d0 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4. \ud558\ub098 \uc774\uc0c1\uc758 \uacbd\uace0 \uc885\ub958\ub97c \uc5b5\uc81c\ud558\ub824\uba74 \ub2e4\uc74c\uc758 \ubb38\ubc95\uc744 \uc0ac\uc6a9\ud558\ub77c.<\/p>\n<p>@SuppressWarnings({&#8220;unchecked&#8221;, &#8220;deprecation&#8221;})<br \/>\n\uc9c0\uc6d0\ub418\ub294 \uacbd\uace0 \uc885\ub958\ub4e4\uc758 \ubaa9\ub85d\uc744 \ubcf4\ub824\uba74 \ucef4\ud30c\uc77c\ub7ec \ubb38\uc11c\ub97c \ud655\uc778\ud558\ub77c.<\/p>\n<p>\uc5b4\ub178\ud14c\uc774\uc158\uc744 \uc880 \ub354 \uace0\uae09\uc2a4\ub7fd\uac8c \uc0ac\uc6a9\ud558\ub294 \uac83\uc5d0\ub294 \uc790\ubc14 \ud504\ub85c\uadf8\ub7a8\uc744 \uc77d\uc5b4 \uadf8\uac83\uc758 \uc5b4\ub178\ud14c\uc774\uc158\uc744 \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \uc791\uc131\ud558\ub294 \uac83\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4. \uc774 \uc791\uc5c5\uc744 \ub3d5\uae30 \uc704\ud574, JDK 5.0 \ub9b4\ub9ac\uc988\uc5d0\ub294 apt\ub77c \ubd88\ub9ac\ub294 \uc5b4\ub178\ud14c\uc774\uc158 \ucc98\ub9ac\ub3c4\uad6c(annotation processing tool)\uac00\ud3ec\ud568\ub418\uc5b4 \uc788\ub2e4. \ub2e4\uc74c\uc758 JDK \ub9b4\ub9ac\uc988(\ucf54\ub4dc\ub124\uc784 \uba38\uc2a4\ud0f1)\uc5d0\ub294 apt \uae30\ub2a5\uc774 \uc790\ubc14 \ucef4\ud30c\uc77c\ub7ec\uc758\ud45c\uc900 \uc694\uc18c\uac00 \ub420 \uac83\uc774\ub2e4. \uc880 \ub354 \uc790\uc138\ud55c \uc815\ubcf4\ub97c \ubcf4\ub824\uba74 Getting Started with the Annotation Processing Tool \ub97c \ucc38\uc870\ud558\ub77c. \uba38\uc2a4\ud0f1\uc758 \uc9c4\ucc99\uc0ac\ud56d\uc5d0 \uad00\ud55c \ub354 \uc790\uc138\ud55c \uc815\ubcf4\ub97c\uc6d0\ud55c\ub2e4\uba74 Language Model API \uc640 JSR 269: Pluggable Annotation Processing API \uc744\ucc38\uace0\ud558\ub77c.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java \uc5b4\ub178\ud14c\uc774\uc158(Annotation)\uc5d0 \uad00\ud55c \uac04\ub7b5\ud55c \uc18c\uac1c \uc6d0\ubcf8 :http:\/\/bioportal.weizmann.ac.il\/course\/prog2\/tutorial\/java\/javaOO\/annotations.html JDK 5.0 \ub9b4\ub9ac\uc988\uc5d0\ub294 \uc5b4\ub178\ud14c\uc774\uc158(annotation)\uc774\ub77c \ubd88\ub9ac\ub294 \uba54\ud0c0\ub370\uc774\ud130 \uae30\ub2a5\uc774 \ub3c4\uc785\ub418\uc5c8\ub2e4. \uc5b4\ub178\ud14c\uc774\uc158\uc740 \ucf54\ub4dc \uc870\uac01\uc758 \uc791\uc131\uc790 \uba85\uc774\ub098 \ucef4\ud30c\uc77c\ub7ec\uac00 \ud2b9\uc815 \uc624\ub958\ub97c \uc5b5\uc81c\ud558\ub3c4\ub85d \uc9c0\uc2dc\ud558\ub294 \uac83\uacfc \uac19\uc774 \ud504\ub85c\uadf8\ub7a8\uc758 \uc77c\ubd80\uac00 \uc544\ub2cc&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/36"}],"collection":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=36"}],"version-history":[{"count":0,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=\/wp\/v2\/posts\/36\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=36"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=36"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.goorigo.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}