{"id":917,"date":"2018-09-17T18:23:52","date_gmt":"2018-09-17T09:23:52","guid":{"rendered":"https:\/\/chat-messenger.com\/?p=917"},"modified":"2018-12-23T02:02:31","modified_gmt":"2018-12-22T17:02:31","slug":"reflect-util","status":"publish","type":"post","link":"https:\/\/chat-messenger.com\/ko\/blog\/java\/reflect-util","title":{"rendered":"Java \ub9ac\ud50c\ub809\uc158\uc774 \uc27d\uc2b5\ub2c8\ub2e4."},"content":{"rendered":"<h2 class=\"common_title\">Java \ub9ac\ud50c\ub809\uc158\uc774 \uc27d\uc2b5\ub2c8\ub2e4.<\/h2>\n<p>\n<strong>\uc790\ubc14<\/strong>\uc758<strong>\ub9ac\ud50c\ub809\uc158<\/strong>API\ub97c \uc27d\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc720\ud2f8\ub9ac\ud2f0 \ud074\ub798\uc2a4\ub97c \uc18c\uac1c\ud569\ub2c8\ub2e4.\n<\/p>\n<h2 class=\"common_title\"><a name=\"1\">\ub9ac\ud50c\ub809\uc158\uc774\ub780?<\/a><\/h2>\n<p>\n<strong>\ub9ac\ud50c\ub809\uc158 API<\/strong>\ub294,<strong>java.lang.reflect<\/strong>&#039;\ud328\ud0a4\uc9c0\uc5d0 \ud3ec\ud568\ub418\uc5b4 \uc788\uc73c\uba70,<br \/>\nJava \ud074\ub798\uc2a4\ub85c\ubd80\ud130 \ud544\ub4dc\ub098 \uba54\uc18c\ub4dc \ub4f1\uc758 \uc815\ubcf4\ub97c \ucde8\ub4dd\ud558\ub294 API\uc785\ub2c8\ub2e4.<br \/>\n\uc8fc\ub85c \ub2e4\uc74c \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\n<\/p>\n<ul>\n<li><strong>java.lang.Class<\/strong><\/li>\n<li><strong>java.lang.reflect.Constructor<\/strong><\/li>\n<li><strong>java.lang.reflect.Method<\/strong><\/li>\n<li><strong>java.lang.reflect.Field<\/strong><\/li>\n<\/ul>\n<p>\n<strong>\ub9ac\ud50c\ub809\uc158<\/strong>\ub97c \uc0ac\uc6a9\ud558\uba74 \ud074\ub798\uc2a4 \uc0dd\uc131\uc774\ub098 \uba54\uc18c\ub4dc \ud638\ucd9c\uc744 \uc9c1\uc811 \ucf54\ub529\ud558\uc9c0 \uc54a\uace0,<br \/>\n\ubb38\uc790\uc5f4\uc5d0\uc11c \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud558\uac70\ub098 \uba54\uc11c\ub4dc\ub97c \uc2e4\ud589\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud074\ub798\uc2a4\uba85\uc774\ub098 \uba54\uc18c\ub4dc\uba85\uc758 \uc815\uc758\ub294 XML\ub4f1\uc758 \uc678\ubd80 \ud30c\uc77c\uc5d0 \uae30\uc220\ud558\ub294 \uac83\uc73c\ub85c, \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub7f0\ud0c0\uc784\uc758 \ud658\uacbd\uc758 \ubcc0\ud654\uc5d0 \ub3d9\uc801\uc73c\ub85c \ub300\uc751\uc2dc\ud0ac \uc218\uac00 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n\ub610\ud55c \uc720\uc5f0\ud55c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uad6c\ucd95\ud558\ub294 \ub370 \ub9e4\uc6b0 \ud6a8\uacfc\uc801\uc778 API\uac00 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.\n<\/p>\n<p><script type=\"text\/javascript\" src=\"https:\/\/chat-messenger.com\/js\/common.js?dd12sssas2223\" charset=\"UTF-8\"><\/script><br \/>\n<script type=\"text\/javascript\"> writePR(); <\/script><\/p>\n<h2 class=\"common_title\"><a name=\"2\">\ub9ac\ud50c\ub809\uc158\uc758 \ubaa9\uc801<\/a><\/h2>\n<p>\n<strong>\ub9ac\ud50c\ub809\uc158<\/strong>\ub294 \uc0ac\uc6a9\uc790\uac00 \uc9c1\uc811 \uc0ac\uc6a9\ud558\ub294 \uac83\uc740\ubcc4\ub85c \ub9ce\uc9c0 \uc54a\uc9c0\ub9cc,<br \/>\nStruts\ub4f1\uc758 Web \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc774\ub098 O\/R \ub9e4\ud551\ub4f1\uc758 \ud504\ub808\uc784\uc6cc\ud06c\ub0b4\uc5d0\uc11c\ub294 \ub9ce\uc774 \uc0ac\uc6a9\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n<br \/>\n\uc608\ub97c \ub4e4\uc5b4 \uc6f9 \ud654\uba74\uc758 \uc785\ub825 \ub370\uc774\ud130\ub97c JavaBeans \uc18d\uc131\uc73c\ub85c \uc790\ub3d9 \uc124\uc815\ud558\uac70\ub098<br \/>\nJavaBeans \ud504\ub85c\ud37c\ud2f0\uc744 \ubc14\ud0d5\uc73c\ub85c \uc790\ub3d9\uc801\uc73c\ub85c \uac31\uc2e0\ud558\ub294 SQL\uc744 \ubc1c\ud589\ud558\ub294 \uacbd\uc6b0 \ub4f1\uc5d0 \uc774\uc6a9\ub418\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub610, \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uae30\ub3d9\uc2dc\uc5d0 \uae30\ub2a5\uc744 \ud655\uc7a5\ud558\ub294 \ud50c\ub7ec\uadf8\uc778\uc744 \ub3d9\uc801\uc73c\ub85c \uc77d\uc5b4 \ub4f1\ub85d\ud558\ub294 \ub4f1\uc758 \uae30\ub2a5\uc740<strong>\ub9ac\ud50c\ub809\uc158<\/strong>\uc744 \uc0ac\uc6a9\ud558\uba74 \uc27d\uac8c \uc2e4\ud604\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n<\/p>\n<h2 class=\"common_title\"><a name=\"3\">\uc0d8\ud50c \uc2e4\ud589<\/a><\/h2>\n<p>\n\uadf8\ub7fc, \uc0d8\ud50c\uc744 \uc2e4\ud589\ud574 \uc8fc\uc2dc\uace0, \uaf2d \ud504\ub808\uc784\uc6cc\ud06c\uc801\uc778 \ud504\ub85c\uadf8\ub798\ubc0d\uc744 \uccb4\uac10\ud574 \uc8fc\uc138\uc694.<br \/>\n<br \/>\n\uc5ec\uae30\uc5d0\uc11c\ub294 \ub2e4\uc74c \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<strong>\ub9ac\ud50c\ub809\uc158<\/strong>\uc720\ud2f8\ub9ac\ud2f0\uc758 \uac04\ub2e8\ud55c \uc0ac\uc6a9\ubc95\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4.<br \/>\n<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/Main.txt\" target=\"_blank\"><strong>Main.java<\/strong><\/a>\u00b7\u00b7\u00b7\uc2e4\ud589\ud558\ub294 \ud074\ub798\uc2a4<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/BeanUtil.txt\" target=\"_blank\"><strong>BeanUtil.java<\/strong><\/a>\u00b7\u00b7\u00b7 \ub9ac\ud50c\ub809\uc158\uc758 \uc720\ud2f8\ub9ac\ud2f0 \ud074\ub798\uc2a4<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/FreeSoft.txt\" target=\"_blank\"><strong>FreeSoft.java<\/strong><\/a>\u30fb\u30fb\u30fb\ud504\ub9ac\uc18c\ud504\ub97c \ub098\ud0c0\ub0b4\ub294 \ud074\ub798\uc2a4\ub85c \ub9ac\ud50c\ub809\uc158\uc73c\ub85c\uc11c \uc774\uc6a9\ub429\ub2c8\ub2e4.<\/p>\n<p><strong>\u25cf \ud3c9\uc18c\ub300\ub85c \uc2e4\ud589\ud55c \uacbd\uc6b0<\/strong>\n<\/p>\n<div class=\"point\">\nSystem.out.println (<span style=\"color: #0000FF;\">\u201c&gt;&gt;&gt;\ud1b5\uc0c1\uc758 \uacbd\uc6b0\u201d<\/span>); <br \/>\nFreeSoft freeSoft = new FreeSoft(); <br \/>\nfreeSoft.setName<span style=\"color: #0000FF;\">(\u201cChat&amp;Messenger \ucc44\ud305\ub3c4 \uba54\uc2e0\uc800\ub3c4!!\u201d<\/span>); <br \/>\nfreeSoft.showName(); <br \/>\nfreeSoft.showPrice(0);\n<\/div>\n<p>\n<strong>\u25cf \ub9ac\ud50c\ub809\uc158\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc2e4\ud589\ud55c \uacbd\uc6b0<\/strong><\/p>\n<div class=\"point\">\nSystem.out.println<span style=\"color: #0000FF;\">(\u201c&gt;&gt;&gt; \ub9ac\ud50c\ub809\uc158\uc744 \uc0ac\uc6a9\ud55c \uacbd\uc6b0\u201d<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/ FreeSoft \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131 <\/span><br \/>\nObject invokeObject = BeanUtil.newInstance<span style=\"color: #0000FF;\">( &quot;FreeSoft&quot;<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/ name \ud544\ub4dc\uc5d0 \uac12\uc744 \uc124\uc815\ud569\ub2c8\ub2e4. <\/span><br \/>\nBeanUtil.setProperty(invokeObject, <span style=\"color: #0000FF;\">\u201c\uc774\ub984\u201d<\/span> , <span style=\"color: #0000FF;\">\u201cChat&amp;Messenger \ucc44\ud305\ub3c4 \uba54\uc2e0\uc800\ub3c4!!\u201d<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/ FreeSoft showName() \uba54\uc11c\ub4dc\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4. <\/span><br \/>\nBeanUtil.invoke(invokeObject, <span style=\"color: #0000FF;\">\u201cshowName\u201d<\/span>, null); <br \/>\n<span style=\"color: #00CC33;\">\/\/ FreeSoft showPrice() \uba54\uc11c\ub4dc\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4. <\/span><br \/>\n<span style=\"color: #00CC33;\">\/\/ \uba54\uc18c\ub4dc\uc5d0 \uc778\uc218\uac00 \uc788\ub294 \uacbd\uc6b0\ub294 Object\ud615\uc758 \ubc30\uc5f4\ub85c \uac74\ub124\uc904 \ud544\uc694\uac00 \uc788\ub2e4. <\/span><br \/>\nBeanUtil.invoke(invokeObject, <span style=\"color: #0000FF;\">\u201cshowPrice\u201d<\/span>,new Object[]{new Integer(0)});\n<\/div>\n\n<p><strong>\u25cf \uc2e4\ud589 \uacb0\uacfc<\/strong><br \/>\n<br \/>\ubcf4\ud1b5\uc758 \uacbd\uc6b0\ub3c4, \ub9ac\ud50c\ub809\uc158\uc744 \uc0ac\uc6a9\ud588\uc744 \uacbd\uc6b0\ub3c4 \uc2e4\ud589 \uacb0\uacfc\ub294 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"console\">\n&gt;&gt;&gt; \ud1b5\uc0c1\uc758 \uacbd\uc6b0<br \/>\n<br \/>\uc18c\ud504\ud2b8 \uc774\ub984: Chat&amp;Messenger \ucc44\ud305\ub3c4 \uba54\uc2e0\uc800\ub3c4! !<br \/>\n<br \/>\uac00\uaca9 : 0\uc5d4<\/p>\n<p>&gt;&gt;&gt; \ub9ac\ud50c\ub809\uc158\uc744 \uc0ac\uc6a9\ud55c \uacbd\uc6b0<br \/>\n<br \/>\uc18c\ud504\ud2b8 \uc774\ub984: Chat&amp;Messenger \ucc44\ud305\ub3c4 \uba54\uc2e0\uc800\ub3c4! !<br \/>\n<br \/>\uac00\uaca9 : 0\uc5d4\n<\/div>\n\n<h2 class=\"common_title\"><a name=\"4\">BeanUtil \uba54\uc18c\ub4dc \uc0c1\uc138<\/a><\/h2>\n<p><a name=\"newInstance(String)\"><!-- --><\/a><\/p>\n<h2>\nnewInstance<\/h2>\n<pre>public static Object <b>newInstance<\/b>(String className) throws Exception<\/pre>\n<dl>\n<dd>\uce90\ub9ad\ud130 \ub77c\uc778 \u300cclassName\u300d\ub85c\ubd80\ud130 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud574 \ub3cc\ub824\uc90d\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>className<\/code> \u2013 \uc815\uaddc\ud654\ub41c \ud074\ub798\uc2a4 \uc774\ub984\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>\uc644\uc804\ud55c \ud074\ub798\uc2a4 \uc774\ub984\uc758 \uc0c8 \uc778\uc2a4\ud134\uc2a4\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>\uc608\uc678<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(String, Object[])\"><!-- --><\/a><\/p>\n<h2>\nnewInstance<\/h2>\n<pre>public static Object <b>newInstance<\/b>(String className, Object[] argObj) throws Exception<\/pre>\n<dl>\n<dd>\uce90\ub9ad\ud130 \ub77c\uc778 \u300cclassName\u300d\ub85c\ubd80\ud130 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud574 \ub3cc\ub824\uc90d\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>className<\/code> \u2013 \uc815\uaddc\ud654\ub41c \ud074\ub798\uc2a4 \uc774\ub984<\/dd>\n<dd><code>argObj<\/code> \u2013 \uc0dd\uc131\uc790 \uc778\uc218\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>\uc644\uc804\ud55c \ud074\ub798\uc2a4 \uc774\ub984\uc758 \uc0c8 \uc778\uc2a4\ud134\uc2a4\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>\uc608\uc678<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(Class)\"><!-- --><\/a><\/p>\n<h2>\nnewInstance<\/h2>\n<pre>public static Object <b>newInstance<\/b>(Class clazz) throws Exception<\/pre>\n<dl>\n<dd>\ud074\ub798\uc2a4 \u300cclazz\u300d\ub85c\ubd80\ud130 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud574 \ub3cc\ub824\uc90d\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>clazz<\/code> \u2013 \ud074\ub798\uc2a4\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>clazz\uc758 \uc0c8\ub85c\uc6b4 \uc778\uc2a4\ud134\uc2a4\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>\uc608\uc678<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(Class, Object[])\"><!-- --><\/a><\/p>\n<h2>\nnewInstance<\/h2>\n<pre>public static Object <b>newInstance<\/b>(Class clazz, Object[] argObj) throws Exception<\/pre>\n<dl>\n<dd>\ud074\ub798\uc2a4 \u300cclazz\u300d\ub85c\ubd80\ud130 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud574 \ub3cc\ub824\uc90d\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>clazz<\/code> \u2013 \ud074\ub798\uc2a4<\/dd>\n<dd><code>argObj<\/code> \u2013 \uc0dd\uc131\uc790 \uc778\uc218\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>clazz\uc758 \uc0c8\ub85c\uc6b4 \uc778\uc2a4\ud134\uc2a4\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>\uc608\uc678<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"setProperty(Object, String, Object)\"><!-- --><\/a><\/p>\n<h2>\nsetProperty<\/h2>\n<pre>public static void <b>setProperty<\/b>(Object invokeObject, String fieldName, Object value) throws Exception<\/pre>\n<dl>\n<dd>\uc624\ube0c\uc81d\ud2b8 \u300cinvokeObject\u300d\uc758 \ud544\ub4dc \u300cfieldName\u300d\uc758 setter \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud574, \uac12 \u300cvalue\u300d\ub97c \ud3ec\ud568\ud569\ub2c8\ub2e4.<\/p>\n<p> setter \uba54\uc11c\ub4dc\uac00 \uc5c6\uc73c\uba74 \ud544\ub4dc\ub85c \uc9c1\uc811 \uac12\uc744 \uc124\uc815\ud569\ub2c8\ub2e4. \ub2e4\ub9cc, \uc774 \uacbd\uc6b0 \ub300\uc0c1 \ud504\ub85c\ud37c\ud2f0\uc758 \uc561\uc138\uc2a4 \ud55c\uc815\uc790\ub294 public\uc778 \uac83<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 \uc2e4\ud589\ud560 \uac1d\uccb4<\/dd>\n<dd><code>fieldName<\/code> \u2013 \uc2e4\ud589\ud560 \uac1d\uccb4\uc758 \uc18d\uc131 \uc774\ub984<\/dd>\n<dd><code>value<\/code> \u2013 \uc124\uc815\ud560 \uac12\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>\uc608\uc678<\/code> \u2013 \ub2e4\uc74c \uc608\uc678\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.\n<\/dd>\n<dd><code>InvocationTargetException<\/code> \u2013 \uae30\ubcf8 \uba54\uc18c\ub4dc\uac00 \uc608\uc678\ub97c throw\ud558\ub294 \uacbd\uc6b0\n<\/dd>\n<dd><code>IllegalAccessException<\/code> \u2013 \uc774 Method \uac1d\uccb4\uac00 Java<br \/>\n             \uc5b8\uc5b4 \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \uc2e4\uc2dc\ud574, \uae30\ubcf8\uc774 \ub418\ub294 \uba54\uc18c\ub4dc\uc5d0 \uc561\uc138\uc2a4 \ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0\n<\/dd>\n<dd><code>NoSuchMethodException<\/code> \u2013 \uc9c0\uc815\ub41c \uc774\ub984\uc758 \uba54\uc18c\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getProperty(Object, String)\"><!-- --><\/a><\/p>\n<h2>\ngetProperty<\/h2>\n<pre>public static Object <b>getProperty<\/b>(Object invokeObject, String fieldName) throws Exception<\/pre>\n<dl>\n<dd>object invokeObject \uc758 \ud544\ub4dc fieldName \uc758 getter \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\uce58\ub97c \uac00\uc838\uc635\ub2c8\ub2e4.<br \/>\n getter \uba54\uc11c\ub4dc\uac00 \uc5c6\uc73c\uba74 \ud544\ub4dc\uc5d0\uc11c \uc9c1\uc811 \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. \ub2e4\ub9cc, \uc774 \uacbd\uc6b0 \ub300\uc0c1 \ud504\ub85c\ud37c\ud2f0\uc758 \uc561\uc138\uc2a4 \ud55c\uc815\uc790\ub294 public\uc778 \uac83<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 \uc2e4\ud589\ud560 \uac1d\uccb4<\/dd>\n<dd><code>fieldName<\/code> \u2013 \uc2e4\ud589\ud560 \uac1d\uccb4\uc758 \uc18d\uc131 \uc774\ub984\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>\uac8c\ud130 \uba54\uc18c\ub4dc\uc758 \ub9ac\ud134 \uac12\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>\uc608\uc678<\/code> \u2013 \ub2e4\uc74c \uc608\uc678\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.\n<\/dd>\n<dd><code>InvocationTargetException<\/code> \u2013 \uae30\ubcf8 \uba54\uc18c\ub4dc\uac00 \uc608\uc678\ub97c throw\ud558\ub294 \uacbd\uc6b0\n<\/dd>\n<dd><code>IllegalAccessException<\/code> \u2013 \uc774 Method \uac1d\uccb4\uac00 Java<br \/>\n             \uc5b8\uc5b4 \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \uc2e4\uc2dc\ud574, \uae30\ubcf8\uc774 \ub418\ub294 \uba54\uc18c\ub4dc\uc5d0 \uc561\uc138\uc2a4 \ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 \uc9c0\uc815\ub41c \uc774\ub984\uc758 \ud544\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"invoke(Object, String, Object[])\"><!-- --><\/a><\/p>\n<h2>\ninvoke<\/h2>\n<pre>public static Object <b>invoke<\/b>(Object invokeObject, String callMethod, Object[] argObjects) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException<\/pre>\n<dl>\n<dd>\uc624\ube0c\uc81d\ud2b8 &quot;invokeObject&quot;\uc758 \uba54\uc18c\ub4dc &quot;callMethod&quot;\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.<br \/>\n \ub9ac\ud134\uac12\uc774 \uc788\ub294 \uacbd\uc6b0\ub294, Object\ud615\uc73c\ub85c\uc11c \uc5bb\uc744 \uc218\uac00 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 \uc2e4\ud589\ud560 \uac1d\uccb4<\/dd>\n<dd><code>callMethod<\/code> \u2013 \uc2e4\ud589\ud560 \uba54\uc18c\ub4dc \uc774\ub984<\/dd>\n<dd><code>argObjects<\/code> - \uc778\uc218\uac00 \uc788\uc73c\uba74 \uac1d\uccb4\uc758 \ubc30\uc5f4\ub85c \uc804\ub2ec\ud569\ub2c8\ub2e4. \uc778\uc218\uac00 \uc5c6\ub294 \uacbd\uc6b0\ub294 null \ub97c \uac74\ub124\uc90d\ub2c8\ub2e4.\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>callMethod\ub97c \uc2e4\ud589\ud55c \ub9ac\ud134\uac12\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>InvocationTargetException<\/code> \u2013 \uae30\ubcf8 \uba54\uc18c\ub4dc\uac00 \uc608\uc678\ub97c throw\ud558\ub294 \uacbd\uc6b0\n<\/dd>\n<dd><code>IllegalAccessException<\/code> \u2013 \uc774 Method \uac1d\uccb4\uac00 Java<br \/>\n             \uc5b8\uc5b4 \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \uc2e4\uc2dc\ud574, \uae30\ubcf8\uc774 \ub418\ub294 \uba54\uc18c\ub4dc\uc5d0 \uc561\uc138\uc2a4 \ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0\n<\/dd>\n<dd><code>NoSuchMethodException<\/code> \u2013 \uc9c0\uc815\ub41c \uc774\ub984\uc758 \uba54\uc18c\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"findMethod(Object, String, Object[])\"><!-- --><\/a><\/p>\n<h2>\nfindMethod<\/h2>\n<pre>public static Method <b>findMethod<\/b>(Object invokeObject, String callMethod, Object[] argObjects) throws NoSuchMethodException<\/pre>\n<dl>\n<dd>\uc624\ube0c\uc81d\ud2b8 &quot;invokeObject&quot;\uc758 \uba54\uc18c\ub4dc &quot;callMethod&quot;\ub97c \uac80\uc0c9\ud569\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 \uc2e4\ud589\ud560 \uac1d\uccb4<\/dd>\n<dd><code>callMethod<\/code> \u2013 \uc2e4\ud589\ud560 \uac1d\uccb4\uc758 \uba54\uc18c\ub4dc \uc774\ub984<\/dd>\n<dd><code>argObjects<\/code> - \uc778\uc218\uac00 \uc788\uc73c\uba74 \uac1d\uccb4\uc758 \ubc30\uc5f4\ub85c \uc804\ub2ec\ud569\ub2c8\ub2e4. \uc778\uc218\uac00 \uc5c6\ub294 \uacbd\uc6b0\ub294 null \ub97c \uac74\ub124\uc90d\ub2c8\ub2e4.\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>\uc9c0\uc815\ub41c \uc778\uc218\uc758 \uc870\uac74\uc5d0 \uc77c\uce58\ud558\ub294 Method \uac1d\uccb4\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>NoSuchMethodException<\/code> \u2013 \uc77c\uce58\ud558\ub294 \uba54\uc18c\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\uac70\ub098 \uc774\ub984\uc774 \u201c\u201d \ub610\ub294 \u201c\u201d\uc778 \uacbd\uc6b0<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"setField(Object, String, Object)\"><!-- --><\/a><\/p>\n<h2>\nsetField<\/h2>\n<pre>public static void <b>setField<\/b>(Object invokeObject, String fieldName, Object value) throws IllegalAccessException, NoSuchFieldException<\/pre>\n<dl>\n<dd>\uc2e4\ud589 \ub300\uc0c1\uc758 \uc624\ube0c\uc81d\ud2b8 \u300cinvokeObject\u300d\uc758 \ud544\ub4dc\uba85 \u300cfieldName\u300d\uc5d0 \uac12 \u300cvalue \u300d\ub97c \ud3ec\ud568\ud569\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 \uc2e4\ud589\ud560 \uac1d\uccb4<\/dd>\n<dd><code>fieldName<\/code> \u2013 \uc2e4\ud589\ud560 \uc624\ube0c\uc81d\ud2b8\uc758 \ud544\ub4dc \uc774\ub984<\/dd>\n<dd><code>value<\/code> \u2013 \uc124\uc815\ud560 \uac12\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>IllegalAccessException<\/code> \u2013 \uc9c0\uc815\ub41c \uac1d\uccb4\uac00 \uae30\ubcf8\uc774 \ub418\ub294 \ud544\ub4dc (\ub610\ub294 \uadf8 \uc11c\ube0c \ud074\ub798\uc2a4\uc778\uac00 \uad6c\ud604\uce21)<br \/>\n             \ub97c \uc120\uc5b8\ud55c\ub2e4 \ud074\ub798\uc2a4 \ub610\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2cc \uacbd\uc6b0, \ub610\ub294 \ub7a9 \ud574\uc81c \ubcc0\ud658\uc774 \uc2e4\ud328\ud588\uc744 \uacbd\uc6b0\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 \uc9c0\uc815\ub41c \uc774\ub984\uc758 \ud544\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getField(Object, String)\"><!-- --><\/a><\/p>\n<h2>\ngetField<\/h2>\n<pre>public static Object <b>getField<\/b>(Object invokeObject, String fieldName) throws IllegalAccessException, NoSuchFieldException<\/pre>\n<dl>\n<dd>\uc2e4\ud589 \ub300\uc0c1\uc758 \uc624\ube0c\uc81d\ud2b8 \u300cinvokeObject\u300d\uc758 \ud544\ub4dc\uba85 \u300cfieldName\u300d\uc758 \uac12\uc744 \ucde8\ub4dd\ud569\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>invokeObject<\/code> \u2013 \uc2e4\ud589\ud560 \uac1d\uccb4<\/dd>\n<dd><code>fieldName<\/code> \u2013 \uc2e4\ud589\ud560 \uc624\ube0c\uc81d\ud2b8\uc758 \ud544\ub4dc \uc774\ub984\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>\ubc18\ud658 \uac12\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>IllegalAccessException<\/code> \u2013 \uc9c0\uc815\ub41c \uac1d\uccb4\uac00 \uae30\ubcf8\uc774 \ub418\ub294 \ud544\ub4dc (\ub610\ub294 \uadf8 \uc11c\ube0c \ud074\ub798\uc2a4\uc778\uac00 \uad6c\ud604\uce21)<br \/>\n             \ub97c \uc120\uc5b8\ud55c\ub2e4 \ud074\ub798\uc2a4 \ub610\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2cc \uacbd\uc6b0, \ub610\ub294 \ub7a9 \ud574\uc81c \ubcc0\ud658\uc774 \uc2e4\ud328\ud588\uc744 \uacbd\uc6b0\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 \uc9c0\uc815\ub41c \uc774\ub984\uc758 \ud544\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"hasField(Object, String)\"><!-- --><\/a><\/p>\n<h2>\nhasField<\/h2>\n<pre>public static boolean <b>hasField<\/b>(Object object, String fieldName) throws Exception<\/pre>\n<dl>\n<dd>\uac1d\uccb4 &quot;object&quot;\uac00 \ud544\ub4dc \uc774\ub984 &quot;fieldName&quot;\uc744 \uc120\uc5b8\ud558\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>\uac1d\uccb4<\/code> \u2013 \uac80\uc0ac \ub300\uc0c1 \uac1d\uccb4<\/dd>\n<dd><code>fieldName<\/code> \u2013 \uac80\uc0ac\ud560 \ud544\ub4dc \uc774\ub984\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>\uc120\uc5b8\ud558\ub294 \uacbd\uc6b0 true\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>\uc608\uc678<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getAllFields(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetAllFields<\/h2>\n<pre>public static java.util.TreeSet <b>getAllFields<\/b>(Object object) throws Exception<\/pre>\n<dl>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>\uac1d\uccb4<\/code> &#8211;\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>\uc608\uc678<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getShortClassName(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetShortClassName<\/h2>\n<pre>public static String <b>getShortClassName<\/b>(Object \uac1d\uccb4)<\/pre>\n<dl>\n<dd>\uc624\ube0c\uc81d\ud2b8\ub85c\ubd80\ud130 \uc644\uc804 \uc218\uc2dd\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc740 \ud074\ub798\uc2a4\uba85\uc744 \ucde8\ub4dd\ud569\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>\uac1d\uccb4<\/code> &#8211;\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getShortClassName(String)\"><!-- --><\/a><\/p>\n<h2>\ngetShortClassName<\/h2>\n<pre>public static String <b>getShortClassName<\/b>(String className)<\/pre>\n<dl>\n<dd>\uc644\uc804 \uc218\uc2dd\uba85\uc73c\ub85c\ubd80\ud130 \ud074\ub798\uc2a4\uba85\uc744 \ucde8\ub4dd\ud569\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>className<\/code> &#8211;\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getFieldName(String)\"><!-- --><\/a><\/p>\n<h2>\ngetFieldName<\/h2>\n<pre>public static String <b>getFieldName<\/b>(String methodName)<\/pre>\n<dl>\n<dd>\uba54\uc18c\ub4dc \uc774\ub984\uc5d0\uc11c \ud544\ub4dc \uc774\ub984\uc744 \ubcc0\uacbd\ud569\ub2c8\ub2e4. JavaBeans\uc758 \uad00\ub840\uc5d0 \uc801\ud569\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>methodName<\/code> &#8211;\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"isClassExist(String)\"><!-- --><\/a><\/p>\n<h2>\nisClassExist<\/h2>\n<pre>public static boolean <b>isClassExist<\/b>(String className)<\/pre>\n<dl>\n<dd>\uc644\uc804 \uc218\uc2dd\uba85 \u300cclassName\u300d\uc774 \uc874\uc7ac\ud558\ub294 \ud074\ub798\uc2a4\uba85\uc778\uac00\ub97c \uac80\uc99d\ud569\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>className<\/code> &#8211;\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getPropertyDescriptors(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetPropertyDescriptors<\/h2>\n<pre>public static PropertyDescriptor[] <b>getPropertyDescriptors<\/b>(Object object) throws IntrospectionException<\/pre>\n<dl>\n<dd>\u300cobject\u300d\uc758 \uc624\ube0c\uc81d\ud2b8 \uc815\ubcf4\ub97c \ubcf4\uad00 \uc720\uc9c0\ud558\ub294 PropertyDescriptor \ub97c \ub3cc\ub824\uc90d\ub2c8\ub2e4.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>\ub9e4\uac1c\ubcc0\uc218:<\/b><\/dt>\n<dd><code>\uac1d\uccb4<\/code> &#8211;\n<\/dd>\n<dt><b>\ubc18\ud658\uac12:<\/b><\/dt>\n<dd>\n<\/dd>\n<dt><b>\uc608\uc678:<\/b>\n<\/dt>\n<dd><code>java.beans.IntrospectionException<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<h2 class=\"common_title\"><a name=\"5\">BeanUtil \uc18c\uc2a4 \ucf54\ub4dc<\/a><\/h2>\n<p><textarea readonly=\"readonly\" style=\"font-size: 13px;height: 400px;\" class=\"src\" onclick=\"this.focus();this.select()\">import java.beans.BeanInfo;<br \/>\nimport java.beans.IntrospectionException;<br \/>\nimport java.beans.Introspector;<br \/>\nimport java.beans.PropertyDescriptor;<br \/>\nimport java.lang.reflect.Constructor;<br \/>\nimport java.lang.reflect.Field;<br \/>\nimport java.lang.reflect.InvocationTargetException;<br \/>\nimport java.lang.reflect.Method;<br \/>\nimport java.math.BigDecimal;<br \/>\nimport java.sql.Timestamp;<br \/>\nimport java.text.SimpleDateFormat;<br \/>\nimport java.util.Calendar;<br \/>\nimport java.util.Date;<br \/>\nimport java.util.HashMap;<br \/>\nimport java.util.Map;<br \/>\nimport java.util.StringTokenizer;<br \/>\nimport java.util.TreeSet;<\/p>\n<p>\/**<br \/>\n * \uc790\ubc14 \ub9ac\ud50c\ub809\uc158 API\ub97c \uc27d\uac8c \uc0ac\uc6a9\ud560 \uc218\uc788\ub294 \uc720\ud2f8\ub9ac\ud2f0 \ud074\ub798\uc2a4<br \/>\n *\/<br \/>\npublic class BeanUtil {<\/p>\n<p>    \/**   *\/<br \/>\n    private static final String GET = \u201cGET\u201d;<br \/>\n    \/**   *\/<br \/>\n    private static final String SET = \u201cSET\u201d;<\/p>\n<p>    \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u300e newInstance \u300f<br \/>\n    \/**<br \/>\n     * \uce90\ub9ad\ud130 \ub77c\uc778 \u300cclassName\u300d\ub85c\ubd80\ud130 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud574 \ub3cc\ub824\uc90d\ub2c8\ub2e4.<br \/>\n     * @param className \uc815\uaddc\ud654\ub41c \ud074\ub798\uc2a4 \uc774\ub984<br \/>\n     * @return \uc815\uaddc\ud654\ub41c \ud074\ub798\uc2a4 \uc774\ub984\uc758 \uc0c8 \uc778\uc2a4\ud134\uc2a4<br \/>\n     * @throws \uc608\uc678<br \/>\n     *\/<br \/>\n    public static Object newInstance (String className) throws Exception {<br \/>\n        try {<br \/>\n            return Class.forName(className).newInstance();<br \/>\n        } catch (NoClassDefFoundError e) {<br \/>\n            System.err.println(\u201cNoClassDefFoundError : \u201d + className);<br \/>\n            throw e;<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uce90\ub9ad\ud130 \ub77c\uc778 \u300cclassName\u300d\ub85c\ubd80\ud130 \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud574 \ub3cc\ub824\uc90d\ub2c8\ub2e4.<br \/>\n     * @param className \uc815\uaddc\ud654\ub41c \ud074\ub798\uc2a4 \uc774\ub984<br \/>\n     * @param argObj \uc0dd\uc131\uc790 \uc778\uc218<br \/>\n     * @return \uc815\uaddc\ud654\ub41c \ud074\ub798\uc2a4 \uc774\ub984\uc758 \uc0c8 \uc778\uc2a4\ud134\uc2a4<br \/>\n     * @throws \uc608\uc678<br \/>\n     *\/<br \/>\n    public static Object newInstance(String className, Object[] argObj)<br \/>\n            throws Exception {<br \/>\n        Class[] argClass = new Class[argObj.length];<br \/>\n        for(int i = 0; i &lt; argObj.length; i++) {<br \/>\n            argClass[i] = argObj[i].getClass();<br \/>\n        }<br \/>\n        Constructor c = Class.forName(className).getConstructor(argClass);<br \/>\n        return c.newInstance(argObj);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \ud074\ub798\uc2a4 &quot;clazz&quot;\uc5d0\uc11c \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud558\uace0 \ubc18\ud658\ud569\ub2c8\ub2e4.<br \/>\n     * @param clazz \ud074\ub798\uc2a4<br \/>\n     * @return clazz\uc758 \uc0c8\ub85c\uc6b4 \uc778\uc2a4\ud134\uc2a4<br \/>\n     * @throws \uc608\uc678<br \/>\n     *\/<br \/>\n    public static Object newInstance (Class clazz) throws Exception {<br \/>\n        return clazz.newInstance();<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \ud074\ub798\uc2a4 &quot;clazz&quot;\uc5d0\uc11c \uc778\uc2a4\ud134\uc2a4\ub97c \uc0dd\uc131\ud558\uace0 \ubc18\ud658\ud569\ub2c8\ub2e4.<br \/>\n     * @param clazz \ud074\ub798\uc2a4<br \/>\n     * @param argObj \uc0dd\uc131\uc790 \uc778\uc218<br \/>\n     * @return clazz\uc758 \uc0c8\ub85c\uc6b4 \uc778\uc2a4\ud134\uc2a4<br \/>\n     * @throws \uc608\uc678<br \/>\n     *\/<br \/>\n    public static Object newInstance(Class clazz, Object[] argObj)<br \/>\n            throws Exception {<br \/>\n        Class[] argClass = new Class[argObj.length];<br \/>\n        for(int i = 0; i &lt; argObj.length; i++) {<br \/>\n            argClass[i] = argObj[i].getClass();<br \/>\n        }<br \/>\n        Constructor c = clazz.getConstructor(argClass);<br \/>\n        return c.newInstance(argObj);<br \/>\n    }<\/p>\n<p>    \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u300e Method \u300f<br \/>\n    \/**<br \/>\n     * \uac1d\uccb4 &quot;invokeObject&quot;\uc758 \ud544\ub4dc &quot;fieldName&quot;\uc758 setter \uba54\uc11c\ub4dc<br \/>\n     * \ud638\ucd9c, \uac12 &quot;value&quot;\ub97c \uc800\uc7a5\ud569\ub2c8\ub2e4.<br \/>\n     * &lt;br&gt;<br \/>\n     * setter \uba54\uc18c\ub4dc\uac00 \uc5c6\uc73c\uba74 \ud544\ub4dc\ub85c \uc9c1\uc811 \uac12\uc744 \uc124\uc815\ud569\ub2c8\ub2e4.<br \/>\n     * \ub2e4\ub9cc, \uc774 \uacbd\uc6b0 \ub300\uc0c1 \ud504\ub85c\ud37c\ud2f0\uc758 \uc561\uc138\uc2a4 \ud55c\uc815\uc790\ub294 public\uc778 \uac83<br \/>\n     * @param invokeObject \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4<br \/>\n     * @param fieldName \uc2e4\ud589\ud560 \uac1d\uccb4\uc758 \uc18d\uc131 \uc774\ub984<br \/>\n     * @param value \uc124\uc815\ud560 \uac12<br \/>\n     * @throws Exception \ub2e4\uc74c \uc608\uc678\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<br \/>\n     * @throws InvocationTargetException \uae30\ubcf8\uc774 \ub418\ub294 \uba54\uc18c\ub4dc\uac00 \uc608\uc678\ub97c \uc2ac\ub85c\uc6b0 \ud558\ub294 \uacbd\uc6b0<br \/>\n     * @throws IllegalAccessException \uc774 Method \uac1d\uccb4\uac00 Java<br \/>\n     * \uc5b8\uc5b4 \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \uc2e4\uc2dc\ud574, \uae30\ubcf8\uc774 \ub418\ub294 \uba54\uc18c\ub4dc\uc5d0 \uc561\uc138\uc2a4 \ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n     * @throws NoSuchMethodException \uc9c0\uc815\ub41c \uc774\ub984\uc758 \uba54\uc18c\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n     *\/<br \/>\n    public static void setProperty(Object invokeObject, String fieldName,<br \/>\n            Object value) throws Exception {<br \/>\n        try {<br \/>\n            Method method = searchMethod(invokeObject, fieldName, SET);<br \/>\n            Class[] paramClasses = method.getParameterTypes();<br \/>\n            Object[] valueArray = null;<br \/>\n            if (paramClasses[0].isInstance(value)) {<br \/>\n                \/\/ \uc124\uc815\ud558\ub294 \uac1d\uccb4\uac00 \uc778\uc218\uc758 \ud074\ub798\uc2a4\uc758 \uc11c\ube0c \ud074\ub798\uc2a4\ub77c\uba74 \ubcc0\ud658\ud558\uc9c0 \uc54a\ub294\ub2e4.<br \/>\n                valueArray = new Object[] { value };<br \/>\n            } else {<br \/>\n                valueArray = new Object[] { convObject(value, paramClasses[0]<br \/>\n                        .getName()) };<br \/>\n            }<br \/>\n            method.invoke(invokeObject, valueArray);<br \/>\n        } catch (NoSuchMethodException e) {<br \/>\n            try {<br \/>\n                \/\/ setter \uba54\uc11c\ub4dc\uac00 \uc5c6\uc73c\uba74 \ud544\ub4dc\uc5d0 \uc9c1\uc811 \uc124\uc815\ud569\ub2c8\ub2e4.<br \/>\n                setField(invokeObject, fieldName, value);<br \/>\n            } catch (NoSuchFieldException fe) {<br \/>\n                String errorMes = \u201c\\n\ud074\ub798\uc2a4\u201d + getShortClassName(invokeObject)<br \/>\n                        + \u201c\ub294\u201d + \u201c\ud544\ub4dc \u201c\u201d + fieldName + \u201c\u201d\uc5d0 \ub300\ud574 \\n\u201d<br \/>\n                        + \u201c\uc561\uc138\uc2a4 \uac00\ub2a5\ud55c \uc138\ud130 \uba54\uc18c\ub4dc\uac00 \uc5c6\uace0.\u201d<br \/>\n                        + &quot;\ud544\ub4dc &quot;&quot; + fieldName<br \/>\n                        + \u201c\u201d\ub3c4 public\uc774 \uc544\ub2d9\ub2c8\ub2e4. &quot;+&quot;&quot;;<br \/>\n                throw new IllegalAccessException (errorMes);<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uac1d\uccb4 invokeObject \ud544\ub4dc fieldName getter \uba54\uc11c\ub4dc<br \/>\n     * \ud638\ucd9c \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4. &lt;br&gt;<br \/>\n     * getter \uba54\uc18c\ub4dc\uac00 \uc5c6\uc73c\uba74 \ud544\ub4dc\uc5d0\uc11c \uc9c1\uc811 \uac12\uc744 \uac00\uc838\uc635\ub2c8\ub2e4.<br \/>\n     * \ub2e4\ub9cc, \uc774 \uacbd\uc6b0 \ub300\uc0c1 \ud504\ub85c\ud37c\ud2f0\uc758 \uc561\uc138\uc2a4 \ud55c\uc815\uc790\ub294 public\uc778 \uac83<br \/>\n     * @param invokeObject \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4<br \/>\n     * @param fieldName \uc2e4\ud589\ud560 \uac1d\uccb4\uc758 \uc18d\uc131 \uc774\ub984<br \/>\n     * @return \uac8c\ud130 \uba54\uc18c\ub4dc\uc758 \ub9ac\ud134 \uac12<br \/>\n     * @throws Exception \ub2e4\uc74c \uc608\uc678\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<br \/>\n     * @throws InvocationTargetException \uae30\ubcf8\uc774 \ub418\ub294 \uba54\uc18c\ub4dc\uac00 \uc608\uc678\ub97c \uc2ac\ub85c\uc6b0 \ud558\ub294 \uacbd\uc6b0<br \/>\n     * @throws IllegalAccessException \uc774 Method \uac1d\uccb4\uac00 Java<br \/>\n     * \uc5b8\uc5b4 \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \uc2e4\uc2dc\ud574, \uae30\ubcf8\uc774 \ub418\ub294 \uba54\uc18c\ub4dc\uc5d0 \uc561\uc138\uc2a4 \ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n     * @throws NoSuchFieldException \uc9c0\uc815\ub41c \uc774\ub984\uc758 \ud544\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n     *\/<br \/>\n    public static Object getProperty (Object invokeObject, String fieldName)<br \/>\n            throws Exception {<br \/>\n        try {<br \/>\n            Method method = searchMethod(invokeObject, fieldName, GET);<br \/>\n            return method. invoke (invokeObject, null);<br \/>\n        } catch (NoSuchMethodException e) {<br \/>\n            return getField(invokeObject, fieldName);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc624\ube0c\uc81d\ud2b8 &quot;invokeObject&quot;\uc758 \uba54\uc18c\ub4dc &quot;callMethod&quot;\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.<br \/>\n     * \ub9ac\ud134\uac12\uc774 \uc788\ub294 \uacbd\uc6b0\ub294 Object\ud615\uc73c\ub85c\uc11c \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n     * @param invokeObject \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4<br \/>\n     * @param callMethod \uc2e4\ud589\ud560 \uba54\uc18c\ub4dc \uc774\ub984<br \/>\n     * @param argObjects \uc778\uc218\uac00 \uc788\ub294 \uacbd\uc6b0\ub294 \uac1d\uccb4\uc758 \ubc30\uc5f4\ub85c\uc11c \uac74\ub124\uc900\ub2e4.<br \/>\n     * \uc778\uc218\uac00 \uc5c6\ub294 \uacbd\uc6b0\ub294 null \ub97c \uac74\ub124\uc90d\ub2c8\ub2e4.<br \/>\n     * @return &quot;callMethod&quot;\ub97c \uc2e4\ud589\ud55c \ubc18\ud658 \uac12<br \/>\n     * @throws InvocationTargetException \uae30\ubcf8\uc774 \ub418\ub294 \uba54\uc18c\ub4dc\uac00 \uc608\uc678\ub97c \uc2ac\ub85c\uc6b0 \ud558\ub294 \uacbd\uc6b0<br \/>\n     * @throws IllegalAccessException \uc774 Method \uac1d\uccb4\uac00 Java<br \/>\n     * \uc5b8\uc5b4 \uc561\uc138\uc2a4 \uc81c\uc5b4\ub97c \uc2e4\uc2dc\ud574, \uae30\ubcf8\uc774 \ub418\ub294 \uba54\uc18c\ub4dc\uc5d0 \uc561\uc138\uc2a4 \ud560 \uc218 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n     * @throws NoSuchMethodException \uc9c0\uc815\ub41c \uc774\ub984\uc758 \uba54\uc18c\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n     *\/<br \/>\n    public static Object invoke(Object invokeObject, String callMethod,<br \/>\n            Object[] argObjects) throws InvocationTargetException,<br \/>\n            IllegalAccessException, NoSuchMethodException {<br \/>\n        Method method = findMethod(invokeObject, callMethod, argObjects);<br \/>\n        return method.invoke(invokeObject, argObjects);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc624\ube0c\uc81d\ud2b8 &quot;invokeObject&quot;\uc758 \uba54\uc18c\ub4dc &quot;callMethod&quot;\ub97c \uac80\uc0c9\ud569\ub2c8\ub2e4.<br \/>\n     * @param invokeObject \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4<br \/>\n     * @param callMethod \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4\uc758 \uba54\uc18c\ub4dc \uc774\ub984<br \/>\n     * @param argObjects \uc778\uc218\uac00 \uc788\ub294 \uacbd\uc6b0\ub294 \uac1d\uccb4\uc758 \ubc30\uc5f4\ub85c\uc11c \uac74\ub124\uc900\ub2e4.<br \/>\n     * \uc778\uc218\uac00 \uc5c6\ub294 \uacbd\uc6b0\ub294 null \ub97c \uac74\ub124\uc90d\ub2c8\ub2e4.<br \/>\n     * @return \uc9c0\uc815\ub41c \uc778\uc218\uc758 \uc870\uac74\uc5d0 \uc77c\uce58\ud558\ub294 Method \uac1d\uccb4<br \/>\n     * @throws NoSuchMethodException \uc77c\uce58\ud558\ub294 \uba54\uc18c\ub4dc\uac00 \ubc1c\uacac\ub418\uc9c0 \uc54a\ub294 \uacbd\uc6b0,<br \/>\n     * \ub610\ub294 \uc774\ub984\uc774 \u201c &quot;\ub610\ub294&quot; \u201d\uc758 \uacbd\uc6b0<br \/>\n     *\/<br \/>\n    public static Method findMethod(Object invokeObject, String callMethod,<br \/>\n            Object[] argObjects) throws NoSuchMethodException {<br \/>\n        Class[] paramClasses = null;<br \/>\n        Method[] methods = invokeObject.getClass().getMethods();<br \/>\n        top: for (int i = 0; i &lt; methods.length; i++) {<br \/>\n            if (methods[i].getName().equals(callMethod)) {<br \/>\n                if (argObjects == null<br \/>\n                        &amp;&amp; methods[i].getParameterTypes().length == 0) {<br \/>\n                    return methods[i];<br \/>\n                }<br \/>\n                if (argObjects == null) {<br \/>\n                    continue;<br \/>\n                }<br \/>\n                paramClasses = methods[i].getParameterTypes();<br \/>\n                if (paramClasses.length == argObjects.length) {<br \/>\n                    \/\/ \ubaa8\ub4e0 \ub9e4\uac1c \ubcc0\uc218 \ubaa9\ub85d\uc758 \ud615\uc2dd\uacfc \uc778\uc218\uc758 \ud615\uc2dd \ud655\uc778<br \/>\n                    for(int j = 0; j &lt; paramClasses.length; j++) {<br \/>\n                        \ud074\ub798\uc2a4 paramClass = paramClasses[j];<br \/>\n                        Object argObj = argObjects[j];<br \/>\n                        \/\/ \uc778\uc218\uc758 \ud615\ud0dc\uac00 \uc6d0\uc2dc\uc801 \uc778 \uacbd\uc6b0, \uc778\uc218\uc758 \uac1d\uccb4<br \/>\n                        \/\/ null\uc774 \uc544\ub2cc \ud504\ub9ac\ubbf8\ud2f0\ube0c<br \/>\n                        \/\/ \uc5ed\uc2dc, Number\uc758 \uc11c\ube0c \ud074\ub798\uc2a4\ub77c\uba74 OK\ub85c \ud55c\ub2e4.<br \/>\n                        if (argObj == null) {<br \/>\n                            continue;<br \/>\n                        }<br \/>\n                        if (paramClass.isPrimitive()<br \/>\n                                &amp;&amp; (argObj instanceof Number || argObj<br \/>\n                                        .getClass().isPrimitive())) {<br \/>\n                            continue;<br \/>\n                        }<br \/>\n                        if (!paramClass.isInstance(argObj)) {<br \/>\n                            \/\/ \ud615\uc5d0 \uc554\ubb35 \ubcc0\ud658\uc758 \ud638\ud658\uc131\uc774 \uc5c6\ub294 \uc2dc\uc810\uc5d0\uc11c, \ub2e4\uc74c\uc758 \uba54\uc18c\ub4dc\uc5d0<br \/>\n                            continue top;<br \/>\n                        }<br \/>\n                    }<br \/>\n                    return methods[i];<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n        String paramLength = (paramClasses != null) ? Integer<br \/>\n                .toString(paramClasses.length) : \u201c\u201d;<br \/>\n        String errorMes = getShortClassName(invokeObject) + \u201c\uc5d0 \uba54\uc11c\ub4dc\u201d<br \/>\n                + callMethod + \u201c\uc5c6\uc74c.\u201d + \u201c[ paramClasses.length ] = \u201d<br \/>\n                + paramLength + \u201c,[ argObjects.length ] = \u201d + argObjects.length<br \/>\n                + &#8220;&#8221;;<br \/>\n        throw new NoSuchMethodException (errorMes);<br \/>\n    }<\/p>\n<p>    \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eField\u300f<br \/>\n    \/**<br \/>\n     * \uc2e4\ud589 \ub300\uc0c1\uc758 \uc624\ube0c\uc81d\ud2b8 \u300cinvokeObject\u300d\uc758 \ud544\ub4dc\uba85 \u300cfieldName\u300d\uc5d0 \uac12<br \/>\n     * &quot;value&quot;\ub97c \uc800\uc7a5\ud569\ub2c8\ub2e4.<br \/>\n     * @param invokeObject \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4<br \/>\n     * @param fieldName \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4\uc758 \ud544\ub4dc \uc774\ub984<br \/>\n     * @param value \uc124\uc815\ud560 \uac12<br \/>\n     * @throws IllegalAccessException \uc9c0\uc815\ub41c \uac1d\uccb4\uac00 \uae30\ubcf8<br \/>\n     * \ub418\ub294 \ud544\ub4dc (\ub610\ub294 \uadf8 \uc11c\ube0c \ud074\ub798\uc2a4\uc778\uac00 \uad6c\ud604\uce21)<br \/>\n     *\ub97c \uc120\uc5b8\ud558\ub294 \ud074\ub798\uc2a4 \ub610\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2cc \uacbd\uc6b0,<br \/>\n     * \ub610\ub294 \ub7a9 \ud574\uc81c \ubcc0\ud658\uc774 \uc2e4\ud328\ud55c \uacbd\uc6b0<br \/>\n     * @throws NoSuchFieldException \uc9c0\uc815\ub41c \uc774\ub984\uc758 \ud544\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n     *\/<br \/>\n    public static void setField (Object invokeObject, String fieldName,<br \/>\n            Object value) throws IllegalAccessException, NoSuchFieldException {<br \/>\n        Field field = searchField(invokeObject, fieldName);<br \/>\n        String className = field.getType().getName();<br \/>\n        Object convObj = null;<br \/>\n        if (field.getType().isInstance(value)) {<br \/>\n            convObj = value;<br \/>\n        } else {<br \/>\n            convObj = convObject(value, className);<br \/>\n        }<br \/>\n        field.set(invokeObject, convObj);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc2e4\ud589 \ub300\uc0c1\uc758 \uc624\ube0c\uc81d\ud2b8 \u300cinvokeObject\u300d\uc758 \ud544\ub4dc\uba85 \u300cfieldName\u300d\uc758 \uac12\uc744<br \/>\n     * \uac00\uc838\uc635\ub2c8\ub2e4.<br \/>\n     * @param invokeObject \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4<br \/>\n     * @param fieldName \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4\uc758 \ud544\ub4dc \uc774\ub984<br \/>\n     * @return \ub9ac\ud134 \uac12<br \/>\n     * @throws IllegalAccessException \uc9c0\uc815\ub41c \uac1d\uccb4\uac00 \uae30\ubcf8<br \/>\n     * \ub418\ub294 \ud544\ub4dc (\ub610\ub294 \uadf8 \uc11c\ube0c \ud074\ub798\uc2a4\uc778\uac00 \uad6c\ud604\uce21)<br \/>\n     *\ub97c \uc120\uc5b8\ud558\ub294 \ud074\ub798\uc2a4 \ub610\ub294 \uc778\ud130\ud398\uc774\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \uc544\ub2cc \uacbd\uc6b0,<br \/>\n     * \ub610\ub294 \ub7a9 \ud574\uc81c \ubcc0\ud658\uc774 \uc2e4\ud328\ud55c \uacbd\uc6b0<br \/>\n     * @throws NoSuchFieldException \uc9c0\uc815\ub41c \uc774\ub984\uc758 \ud544\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n     *\/<br \/>\n    public static Object getField (Object invokeObject, String fieldName)<br \/>\n            throws IllegalAccessException, NoSuchFieldException {<br \/>\n        Field field = searchField(invokeObject, fieldName);<br \/>\n        return field.get(invokeObject);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uac1d\uccb4 &quot;object&quot;\uac00 \ud544\ub4dc \uc774\ub984 &quot;fieldName&quot;\uc744 \uc120\uc5b8\ud558\ub294\uc9c0 \uc5ec\ubd80<br \/>\n     * \ud655\uc778\ud569\ub2c8\ub2e4.<br \/>\n     * @param object \uac80\uc0ac \ub300\uc0c1 \uac1d\uccb4<br \/>\n     * @param fieldName \uac80\uc0ac \ud560 \ud544\ub4dc \uc774\ub984<br \/>\n     * @return \uc120\uc5b8\ud558\ub294 \uacbd\uc6b0 true<br \/>\n     * @throws \uc608\uc678<br \/>\n     *\/<br \/>\n    public static boolean hasField (Object object, String fieldName)<br \/>\n            throws Exception {<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(object);<br \/>\n        for(int i = 0; i &lt; props.length; i++) {<br \/>\n            String _fieldName = props[i].getName();<br \/>\n            if (fieldName.equals(_fieldName)) {<br \/>\n                return true;<br \/>\n            }<br \/>\n        }<br \/>\n        return false;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     *<br \/>\n     * @param \uac1d\uccb4<br \/>\n     * @return<br \/>\n     * @throws \uc608\uc678<br \/>\n     *\/<br \/>\n    public static TreeSet getAllFields (Object object) throws Exception {<\/p>\n<p>        TreeSet fieldSet = new TreeSet();<br \/>\n        \/\/ \uba54\uc18c\ub4dc\uc5d0\uc11c \uc18d\uc131 \uc774\ub984 \uac80\uc0c9<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(object);<br \/>\n        for(int i = 0; i &lt; props.length; i++) {<br \/>\n            String fieldName = props[i].getName();<br \/>\n            fieldSet.add(fieldName);<\/p>\n<p>        }<\/p>\n<p>        \/\/ \ud544\ub4dc\uc5d0\uc11c \uc18d\uc131 \uc774\ub984 \uac00\uc838 \uc624\uae30<br \/>\n        Field[] fields = object.getClass().getFields();<br \/>\n        for(int i = 0; i &lt; fields.length; i++) {<br \/>\n            String fieldName = fields[i].getName();<br \/>\n            if (!fieldSet.contains(fieldName)) {<br \/>\n                fieldSet.add(fieldName);<br \/>\n            }<br \/>\n        }<br \/>\n        return fieldSet;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     *<br \/>\n     * @param invokeObject \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4<br \/>\n     * @param fieldName \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4\uc758 \ud544\ub4dc \uc774\ub984<br \/>\n     * @return \uc9c0\uc815\ub41c \uc778\uc218\uc758 \uc870\uac74\uc5d0 \uc77c\uce58\ud558\ub294 Filed \uac1d\uccb4<br \/>\n     * @throws NoSuchFieldException \uc9c0\uc815\ub41c \uc774\ub984\uc758 \ud544\ub4dc\ub97c \ucc3e\uc744 \uc218 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n     *\/<br \/>\n    private static Field searchField (Object invokeObject, String fieldName)<br \/>\n            throws NoSuchFieldException {<br \/>\n        try {<br \/>\n            return invokeObject.getClass().getField(fieldName);<br \/>\n        } catch (NoSuchFieldException e) {<br \/>\n            \/\/\uc774 \ubc94\uc704\ub294 \ud14c\uc774\ube14 \uc5f4 \uc774\ub984\uc5d0\uc11c \uac00\uc838\uc635\ub2c8\ub2e4.<br \/>\n            fieldName = checkFieldName(fieldName);<br \/>\n            Field[] fields = invokeObject.getClass().getFields();<br \/>\n            for(int i = 0; i &lt; fields.length; i++) {<br \/>\n                if (fields[i].getName().equalsIgnoreCase(fieldName)) {<br \/>\n                    return fields[i];<br \/>\n                }<br \/>\n            }<br \/>\n            throw new NoSuchFieldException (fieldName);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300e\uae30\ud0c0\u300f<\/p>\n<p>    \/**<br \/>\n     * \uc624\ube0c\uc81d\ud2b8\ub85c\ubd80\ud130 \uc644\uc804 \uc218\uc2dd\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc740 \ud074\ub798\uc2a4\uba85\uc744 \ucde8\ub4dd\ud569\ub2c8\ub2e4.<br \/>\n     * @param \uac1d\uccb4<br \/>\n     * @return<br \/>\n     *\/<br \/>\n    public static String getShortClassName (Object object) {<br \/>\n        if (object == null) {<br \/>\n            return \u201cnull\u201d;<br \/>\n        }<br \/>\n        String name = object.getClass().getName();<br \/>\n        return getShortClassName(name);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc644\uc804 \uc218\uc2dd\uba85\uc73c\ub85c\ubd80\ud130 \ud074\ub798\uc2a4\uba85\uc744 \ucde8\ub4dd\ud569\ub2c8\ub2e4.<br \/>\n     * @param className<br \/>\n     * @return<br \/>\n     *\/<br \/>\n    public static String getShortClassName (String className) {<br \/>\n        int index = className.lastIndexOf(\u201c.\u201d);<br \/>\n        return className.substring(index + 1);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uba54\uc18c\ub4dc \uc774\ub984\uc5d0\uc11c \ud544\ub4dc \uc774\ub984\uc744 \ubcc0\uacbd\ud569\ub2c8\ub2e4. JavaBeans\uc758 \uad00\ub840\uc5d0 \uc801\ud569<br \/>\n     * \ud544\uc694\ud569\ub2c8\ub2e4.<br \/>\n     * @param methodName<br \/>\n     * @return<br \/>\n     *\/<br \/>\n    public static String getFieldName (String methodName) {<br \/>\n        String fieldName = null;<br \/>\n        if (methodName.startsWith(\u201cis\u201d)) {<br \/>\n            fieldName = methodName.substring(2);<br \/>\n        } else {<br \/>\n            fieldName = methodName.substring(3);<br \/>\n        }<br \/>\n        fieldName = convString(fieldName, 0, \u201cL\u201d);<br \/>\n        return fieldName;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc644\uc804 \uc218\uc2dd\uba85 \u300cclassName\u300d\uc774 \uc874\uc7ac\ud558\ub294 \ud074\ub798\uc2a4\uba85\uc778\uac00\ub97c \uac80\uc99d\ud569\ub2c8\ub2e4.<br \/>\n     * @param className<br \/>\n     * @return<br \/>\n     *\/<br \/>\n    public static boolean isClassExist (String className) {<br \/>\n        try {<br \/>\n            Class.forName(className);<br \/>\n            return true;<br \/>\n        } catch (Exception e) {<br \/>\n            return false;<br \/>\n        }<br \/>\n    }<\/p>\n<p>    private final static Map beanInfoCache = new HashMap();<\/p>\n<p>    \/**<br \/>\n     * \u300cobject\u300d\uc758 \uc624\ube0c\uc81d\ud2b8 \uc815\ubcf4\ub97c \ubcf4\uad00 \uc720\uc9c0\ud558\ub294 PropertyDescriptor\ub97c \ub3cc\ub824\uc90d\ub2c8\ub2e4.<br \/>\n     * @param \uac1d\uccb4<br \/>\n     * @return<br \/>\n     * @throws IntrospectionException<br \/>\n     *\/<br \/>\n    public static PropertyDescriptor[] getPropertyDescriptors(Object object)<br \/>\n            throws IntrospectionException {<\/p>\n<p>        BeanInfo beanInfo = (BeanInfo) beanInfoCache.get(object.getClass());<br \/>\n        if (beanInfo == null) {<br \/>\n            beanInfo = Introspector.getBeanInfo(object.getClass());<br \/>\n            beanInfoCache.put(object.getClass(), beanInfo);<br \/>\n        }<br \/>\n        \/\/ BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass());<br \/>\n        return beanInfo.getPropertyDescriptors();<br \/>\n    }<\/p>\n<p>    \/\/ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n    \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u300e\uc774\ud558 \ud504\ub77c\uc774\ube57 \uba54\uc18c\ub4dc\u300f<br \/>\n    \/\/ &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br \/>\n    \/**<br \/>\n     * PropertyDescriptor\ub97c \uae30\ubc18\uc73c\ub85c \uc778\uc218\uc758 fieldName\uc5d0 \ub300\ud55c \uc811\uadfc \ubc29\ubc95\uc744 \uac80\uc0c9\ud569\ub2c8\ub2e4.<br \/>\n     * @param invokeObject \uc2e4\ud589 \ub300\uc0c1 \uac1d\uccb4<br \/>\n     * @param fieldName \ud544\ub4dc \uc774\ub984<br \/>\n     * @param type getter \uba54\uc18c\ub4dc \u21d2 GET getter \uba54\uc18c\ub4dc \u21d2 SET<br \/>\n     * @return \uc9c0\uc815\ub41c \uc778\uc218\uc758 \uc870\uac74\uc5d0 \uc77c\uce58\ud558\ub294 Method \uac1d\uccb4<br \/>\n     * @throws NoSuchMethodException \uc77c\uce58\ud558\ub294 \uba54\uc18c\ub4dc\uac00 \ubc1c\uacac\ub418\uc9c0 \uc54a\ub294 \uacbd\uc6b0,<br \/>\n     * \ub610\ub294 \uc774\ub984\uc774 \u201c &quot;\ub610\ub294&quot; \u201d<br \/>\n     *\uc758 \uacbd\uc6b0<br \/>\n     * @throws IntrospectionException<br \/>\n     *\/<br \/>\n    private static Method searchMethod (Object invokeObject, String fieldName,<br \/>\n            String type) throws NoSuchMethodException, IntrospectionException {<br \/>\n        Method method = null;<br \/>\n        fieldName = checkFieldName(fieldName);<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(invokeObject);<br \/>\n        for(int i = 0; i &lt; props.length; i++) {<br \/>\n            String name = props[i].getName();<br \/>\n            if (!name.equalsIgnoreCase(fieldName)) {<br \/>\n                continue;<br \/>\n            }<br \/>\n            if (type.equals(GET)) {<br \/>\n                method = props[i].getReadMethod();<br \/>\n            } else {<br \/>\n                method = props[i].getWriteMethod();<br \/>\n            }<br \/>\n            if (method == null) {<br \/>\n                continue;<br \/>\n            }<br \/>\n            return method;<br \/>\n        }<\/p>\n<p>        \/\/ \uba54\uc18c\ub4dc\uac00 \uc874\uc7ac\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0.<br \/>\n        throw new NoSuchMethodException(\u201c\ud074\ub798\uc2a4\uc5d0 \uba54\uc18c\ub4dc\uac00 \uc5c6\uc2b5\ub2c8\ub2e4.\u201d<br \/>\n                + \u201c(\ub300\uc18c\ubb38\uc790 \uad6c\ubd84 \uc5c6\uc74c):\u201d + type.toLowerCase()<br \/>\n                + convString(fieldName, 0, \u201cU\u201d) + \u201c()\u201d);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc778\uc218\uc758 fieldName\uc774 \uceec\ub7fc\uba85\uc758 \uacbd\uc6b0\ub97c \uccb4\ud06c\ud574, \uceec\ub7fc\uba85\uc758 \uacbd\uc6b0\ub294<br \/>\n     * \ubcc0\ud658\ud558\uc5ec \ubc18\ud658\ud569\ub2c8\ub2e4.<br \/>\n     *<br \/>\n     * MAIL_ADDRESS \u21d2 MAILADDRESS \u2193 mailaddress = mailAddress<br \/>\n     * @param fieldName \ud544\ub4dc \uc774\ub984 \ub610\ub294 \uc5f4 \uc774\ub984<br \/>\n     * @return \ud544\ub4dc \uc774\ub984<br \/>\n     *\/<br \/>\n    private static String checkFieldName (String fieldName) {<br \/>\n        int index = fieldName.indexOf(\u201c_\u201d);<br \/>\n        while (true) {<br \/>\n            if (index == -1) {<br \/>\n                return fieldName;<br \/>\n            }<br \/>\n            StringBuffer convcloumn = new StringBuffer(fieldName);<br \/>\n            convcloumn.deleteCharAt (index);<br \/>\n            fieldName = convcloumn.toString();<br \/>\n            index = fieldName.indexOf(\u201c_\u201d);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \ubcc0\ud658 \ub300\uc0c1\uc758 \uac1d\uccb4 object \ub97c convClassName \uc758 \ud615\ud0dc\ub85c \ubcc0\ud658\ud569\ub2c8\ub2e4.<br \/>\n     *<br \/>\n     * @param object \ubcc0\ud658 \ub300\uc0c1\uc758 \uc624\ube0c\uc81d\ud2b8<br \/>\n     * @param convClassName \ubcc0\ud658\ud560 \ud615\uc2dd\uc758 \ud074\ub798\uc2a4 \ubb38\uc790\uc5f4<br \/>\n     * @return \ubcc0\ud658\ub41c \uac1d\uccb4<br \/>\n     *\/<br \/>\n    private static Object convObject (Object object, String convClassName) {<br \/>\n        if (object == null) {<br \/>\n            \/\/ \uc6d0\uc2dc\uc801 \ud0c0\uc785\uc73c\ub85c\uc758 \ubcc0\ud658\uc740 null\ub85c \ub3cc\ub824\uc8fc\uba74 \uc5d0\ub7ec\uac00 \ub41c\ub2e4.<br \/>\n            \/\/ 0\uc758 \ub798\ud37c\ub85c \ud55c\ub2e4.<br \/>\n            if (convClassName.equals(\u201cint\u201d)) {<br \/>\n                return new Integer(0);<br \/>\n            } else if (convClassName.equals(\u201clong\u201d)) {<br \/>\n                return new Long(0);<br \/>\n            } else {<br \/>\n                return null;<br \/>\n            }<br \/>\n        }<br \/>\n        if (object.getClass().getName().equals(convClassName)) {<br \/>\n            return object;<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-- &#039;object instanceof String &#039;<br \/>\n        if (object instanceof String) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return object;<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<br \/>\n                String str = (String) object;<br \/>\n                if (isExist(str)) {<br \/>\n                    \/\/ \uc77c\ub2e8 BigDecimal\ub85c \ubcc0\ud658\ud558\uc9c0 \uc54a\uc73c\uba74 \uc0c1\ud0dc\uac00 \ub098\uc058\ub2e4.<br \/>\n                    \/\/ 1000.00000<br \/>\n                    BigDecimal big = new BigDecimal(str);<br \/>\n                    return new Long(big.longValue());<br \/>\n                } else {<br \/>\n                    \/\/ str\uc774 \uc258 \ub9ac\ud130\ub7f4\uc774\uba74 \ucd08\uae30 \uac12\uc758 &quot;0&quot;<br \/>\n                    return new Long(0);<br \/>\n                }<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Date\u201d)) {<br \/>\n                return toSqlDate((String) object);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                Date date = toSqlDate((String) object);<br \/>\n                return new Timestamp(date.getTime());<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                \/\/ str\uc774 \uc258 \ub9ac\ud130\ub7f4\uc774\uba74 \ucd08\uae30 \uac12\uc758 &quot;0&quot;<br \/>\n                String str = (String) object;<br \/>\n                if (isExist(str)) {<br \/>\n                    BigDecimal big = new BigDecimal(str);<br \/>\n                    return new Integer(big.intValue());<br \/>\n                } else {<br \/>\n                    return new Integer(0);<br \/>\n                }<br \/>\n            } else if (convClassName.equals(\u201cboolean\u201d)) {<br \/>\n                return Boolean.valueOf(object.toString());<br \/>\n            } else if (convClassName.equals(&quot;java.math.BigDecimal&quot;)) {<br \/>\n                String temp = ((String) object).trim();<br \/>\n                \/\/ temp.length() == 0\uc778 \uacbd\uc6b0 0\uc774 \uc544\ub2c8\ub77c null\ub85c \ud558\ub294 \uac83\uc774 \ubb34\ub09c.<br \/>\n                if (temp.length() == 0) {<br \/>\n                    return null;<br \/>\n                } else {<br \/>\n                    return new BigDecimal(temp);<br \/>\n                }<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u300e object instanceof java.sql.Date \u300f<br \/>\n        else if (object instanceof java.sql.Date) {<\/p>\n<p>            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return toStringDate((java.sql.Date) object, \u201cyyyy\/MM\/dd\u201d);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Date\u201d)) {<br \/>\n                return object;<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                return new Timestamp(((Date) object).getTime());<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eobject instanceof Timestamp\u300f<br \/>\n        else if (object instanceof Timestamp) {<br \/>\n            long time = ((Timestamp) object).getTime();<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return toStringDate(time, \u201cyyyy\/MM\/dd HH:mm:ss\u201d);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Date\u201d)) {<br \/>\n                return new java.sql.Date(time);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                return object;<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u300e object instanceof Integer \u300f<br \/>\n        else if (object instanceof Integer) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                return object;<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return object.toString();<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<br \/>\n                return new Long (((Integer) object). longValue ());<br \/>\n            } else if (convClassName.equals(&quot;java.math.BigDecimal&quot;)) {<br \/>\n                return new BigDecimal(((Integer) object).intValue());<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u300e object instanceof Long \u300f<br \/>\n        else if (object instanceof Long) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<br \/>\n                return object;<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return object.toString();<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                return new Integer (((Long) object). intValue ());<br \/>\n            } else if (convClassName.equals(&quot;java.math.BigDecimal&quot;)) {<br \/>\n                return new BigDecimal(((Long) object).longValue());<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u300e object instanceof Double \u300f<br \/>\n        else if (object instanceof Double) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                \/\/ COLUMN NUMBER(8,0)<br \/>\n                \/\/ windows oracle &gt; BigDecimal<br \/>\n                \/\/ UNIX oracle &gt; Double<br \/>\n                BigDecimal big = new BigDecimal(((Double) object).doubleValue());<br \/>\n                int scale = big.scale();<br \/>\n                if (scale == 0) {<br \/>\n                    return big.toString();<br \/>\n                } else {<br \/>\n                    \/\/ \ubc18\uc62c\ub9bc\uc774 \ud544\uc694\ud55c \uacbd\uc6b0\uc5d0\ub294 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<br \/>\n                    throwNoSupprt(object, convClassName);<br \/>\n                }<br \/>\n            }<br \/>\n            if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                return new Integer(((Double) object).intValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<br \/>\n                return new Long (((Double) object). longValue ());<br \/>\n            } else if (convClassName.equals(&quot;java.math.BigDecimal&quot;)) {<br \/>\n                return new BigDecimal (((Double) object). doubleValue ());<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u300e object instanceof BigDecimal \u300f<br \/>\n        else if (object instanceof BigDecimal) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return object.toString();<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201clong\u201d)) {<br \/>\n                return new Long (((BigDecimal) object). longValue ());<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                return new Integer (((BigDecimal) object). intValue ());<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eobject instanceof byte[]\u300f<br \/>\n        else if (object instanceof byte[]) {<br \/>\n            if (convClassName.equals(\u201cjava.sql.Blob\u201d)) {<br \/>\n                return object;<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014 \u300e object \uac00 Boolean \u300f<br \/>\n        else if (object instanceof Boolean) {<br \/>\n            if (convClassName.equals(\u201cboolean\u201d)) {<br \/>\n                return object;<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300eobject \uac00 boolean[] \u300f<br \/>\n        else if (object instanceof boolean[]) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                boolean[] bs = (boolean[]) object;<br \/>\n                StringBuffer buff = new StringBuffer(\u201c[\u201c);<br \/>\n                for(int i = 0; i &lt; bs.length; i++) {<br \/>\n                    buff.append(bs[i] + \u201c,\u201d);<br \/>\n                }<br \/>\n                buff.deleteCharAt(buff.length() \u2013 1);<br \/>\n                buff.append(\u201c]\u201d);<br \/>\n                return buff.toString();<br \/>\n            }<br \/>\n            throwNoSupprt(object, convClassName);<br \/>\n        }<br \/>\n        throwNoSupprt(object, convClassName);<br \/>\n        return null;<\/p>\n<p>    }<\/p>\n<p>    \/**<br \/>\n     * \ubcc0\ud658\uc774 \uc11c\ud3ec\ud2b8\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc740 \uacbd\uc6b0\uc5d0 \uc2ac\ub85c\uc6b0 \ud569\ub2c8\ub2e4.<br \/>\n     *<br \/>\n     * @param object \ubcc0\ud658 \ub300\uc0c1\uc758 \uc624\ube0c\uc81d\ud2b8<br \/>\n     * @param convClassName \ubcc0\ud658\ud560 \ud615\uc2dd<br \/>\n     *\/<br \/>\n    private static void throwNoSupprt (Object object, String convClassName) {<br \/>\n        String className = (object != null) ? object.getClass().getName()<br \/>\n                : \u201cnull\u201d;<br \/>\n        String errorMess = \u201c\\n\uc774 Object\uc758 \ud615\uc2dd \ubcc0\ud658 \ucc98\ub9ac\ub294 \uc544\uc9c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.\\n\u201d<br \/>\n                + \u201d [ Object ] = \u201d + object + \u201c,[ Object \ud615\uc2dd ] = \u201d + className<br \/>\n                + \u201c,[ convertClass ] = \u201d + convClassName + \u201c\u201d;<br \/>\n        throw new UnsupportedOperationException (errorMess);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \ubb38\uc790\uc5f4 [str]\uc5d0 \ub300\ud574 [index] \uc704\uce58\uc758 \ubb38\uc790\ub97c \ub300\ubb38\uc790 \ub610\ub294 \uc18c\ubb38\uc790\ub85c \ubcc0\ud658\ud569\ub2c8\ub2e4.<br \/>\n     * &lt;p&gt;<br \/>\n     * @param str \ud3c9\uac00 \ub300\uc0c1 \ubb38\uc790\uc5f4<br \/>\n     * @param index \uc9c0\uc815\ud55c \uc704\uce58<br \/>\n     * @param toCase \ub300\ubb38\uc790\ub85c \ubcc0\ud658 \u21d2 U | u \uc18c\ubb38\uc790\ub85c \ubcc0\ud658 \u21d2 L | l<br \/>\n     * @return \ubcc0\ud658 \ud6c4 \ubb38\uc790\uc5f4<br \/>\n     *\/<br \/>\n    private static String convString (String str, int index, String toCase) {<br \/>\n        if (str == null || str.trim().length() == 0) {<br \/>\n            return str;<br \/>\n        } else {<br \/>\n            String temp = str.substring(index, index + 1);<br \/>\n            if (toCase.equalsIgnoreCase(\u201cu\u201d)) {<br \/>\n                temp = temp.toUpperCase();<br \/>\n            } else {<br \/>\n                temp = temp.toLowerCase();<br \/>\n            }<br \/>\n            StringBuffer tempBuffer = new StringBuffer(str);<br \/>\n            tempBuffer.replace(index, index + 1, temp);<br \/>\n            return tempBuffer.toString();<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * [value]\uac00 \uc720\ud6a8\ud55c \uac12\uc778\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<br \/>\n     *<br \/>\n     * @param value \ud3c9\uac00 \ub300\uc0c1 \ubb38\uc790\uc5f4<br \/>\n     * @return [true]: null\uc774 \uc544\ub2c8\ub77c &quot;&quot;\uac00 \uc544\ub2cc \uacbd\uc6b0<br \/>\n     *\/<br \/>\n    private static boolean isExist (String value) {<br \/>\n        if (value != null &amp;&amp; value.length() != 0) {<br \/>\n            return true;<br \/>\n        }<br \/>\n        return false;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * java.util.Date \ud074\ub798\uc2a4 \ub610\ub294 \uadf8 \uc11c\ube0c \ud074\ub798\uc2a4\ub97c \uc9c0\uc815\ub41c \ud615\uc2dd\uc73c\ub85c<br \/>\n     * \ubb38\uc790\uc5f4\ub85c \ubcc0\ud658\ud569\ub2c8\ub2e4.<br \/>\n     * @param date \ubcc0\ud658 \ub300\uc0c1\uc758 java.util.Date \ud074\ub798\uc2a4<br \/>\n     * @param pattern \uc9c0\uc815\ub41c \ud615\uc2dd<br \/>\n     * @return \ud615\uc2dd\ud654\ub41c \ub0a0\uc9dc \ubb38\uc790\uc5f4<br \/>\n     *\/<br \/>\n    private static String toStringDate (Date date, String pattern) {<br \/>\n        SimpleDateFormat sdFormat = new SimpleDateFormat(pattern);<br \/>\n        return sdFormat.format(date);<br \/>\n    }<\/p>\n<p>    private static java.sql. Date toSqlDate (String strDate) {<br \/>\n        Calendar cal = toCalendar(strDate);<br \/>\n        return toSqlDate(cal);<br \/>\n    }<\/p>\n<p>    private static java.sql.Date toSqlDate(Calendar cal) {<br \/>\n        long l = cal.getTime().getTime();<br \/>\n        return new java.sql.Date(l);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \uc2dc\uac04\uc758 \uae34 \uac12\uc744 \uc9c0\uc815\ub41c \ud615\uc2dd\uc73c\ub85c \ubb38\uc790\uc5f4\ub85c \ubcc0\ud658\ud569\ub2c8\ub2e4.<br \/>\n     * @param time \ud604\uc7ac \uc2dc\uac04\uc758 \ubc00\ub9ac \ucd08\ub97c \ub098\ud0c0\ub0b4\ub294 \uae34 \uac12<br \/>\n     * @param pattern \uc9c0\uc815\ub41c \ud615\uc2dd<br \/>\n     * @return \ud615\uc2dd\ud654\ub41c \ub0a0\uc9dc \ubb38\uc790\uc5f4<br \/>\n     *\/<br \/>\n    private static String toStringDate (long time, String pattern) {<br \/>\n        return toStringDate(new Date(time), pattern);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * String \u21d2 java.sql.Date<br \/>\n     *<br \/>\n     * \ub2e4\uc74c \ub0a0\uc9dc \ubb38\uc790\uc5f4\uc744 java.sql.Date\ub85c \ubcc0\ud658<br \/>\n     * yyyy\/MM\/dd HH:mm:ss.SSS yyyy-MM-dd HH:mm:ss.SSS<br \/>\n     *<br \/>\n     * &#8220;20030407&#8221; &#8220;2003\/04\/07&#8221; &#8220;2003-04-07&#8221; &#8220;2003\/04\/07 15:20:16&#8221; &#8220;2003-04-07<br \/>\n     * 15:20:16&#8221;<br \/>\n     * @param strDate<br \/>\n     * @return<br \/>\n     *\/<br \/>\n    private static Calendar toCalendar (String strDate) {<br \/>\n        strDate = format(strDate);<br \/>\n        Calendar cal = Calendar.getInstance();<\/p>\n<p>        int yyyy = Integer.parseInt(strDate.substring(0, 4));<br \/>\n        int MM = Integer.parseInt(strDate.substring(5, 7));<br \/>\n        int dd = Integer.parseInt(strDate.substring(8, 10));<br \/>\n        int HH = cal.get(Calendar.HOUR_OF_DAY);<br \/>\n        int mm = cal.get(Calendar.MINUTE);<br \/>\n        int ss = cal.get(Calendar.SECOND);<br \/>\n        int SSS = cal.get(Calendar.MILLISECOND);<\/p>\n<p>        cal.clear();<br \/>\n        cal.set(yyyy, MM \u2013 1, dd);<\/p>\n<p>        int len = strDate.length();<br \/>\n        switch (len) {<br \/>\n        case 10:<br \/>\n            break;<br \/>\n        case 16: \/\/ yyyy\/MM\/dd HH:mm<br \/>\n            HH = Integer.parseInt(strDate.substring(11, 13));<br \/>\n            mm = Integer.parseInt(strDate.substring(14, 16));<br \/>\n            cal.set (Calendar.HOUR_OF_DAY, HH);<br \/>\n            cal.set(Calendar.MINUTE, mm);<br \/>\n            break;<br \/>\n        case 19: \/\/ yyyy\/MM\/dd HH:mm:ss<br \/>\n            HH = Integer.parseInt(strDate.substring(11, 13));<br \/>\n            mm = Integer.parseInt(strDate.substring(14, 16));<br \/>\n            ss = Integer.parseInt(strDate.substring(17, 19));<br \/>\n            cal.set (Calendar.HOUR_OF_DAY, HH);<br \/>\n            cal.set(Calendar.MINUTE, mm);<br \/>\n            cal.set(Calendar.SECOND, ss);<br \/>\n            break;<br \/>\n        case 23: \/\/ yyyy\/MM\/dd HH:mm:ss.SSS<br \/>\n            HH = Integer.parseInt(strDate.substring(11, 13));<br \/>\n            mm = Integer.parseInt(strDate.substring(14, 16));<br \/>\n            ss = Integer.parseInt(strDate.substring(17, 19));<br \/>\n            SSS = Integer.parseInt(strDate.substring(20, 23));<br \/>\n            cal.set (Calendar.HOUR_OF_DAY, HH);<br \/>\n            cal.set(Calendar.MINUTE, mm);<br \/>\n            cal.set(Calendar.SECOND, ss);<br \/>\n            cal.set (Calendar.MILLISECOND, SSS);<br \/>\n            break;<br \/>\n        default:<br \/>\n            throw new IllegalStateException (<br \/>\n                    &quot;\uc774 \ubb38\uc790\uc5f4 \ubb38\uc790\uc5f4\uc740 \ub0a0\uc9dc \ubb38\uc790\uc5f4\ub85c \ubcc0\ud658 \ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 :&quot;<br \/>\n                    + strDate);<br \/>\n        }<br \/>\n        return cal;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \ubaa8\ub4e0 \ub0a0\uc9dc \ubb38\uc790\uc5f4\uc744 \u201cyyyy\/MM\/dd\u201d or \u201cyyyy\/MM\/dd HH:mm:ss\u201d<br \/>\n     * \ud615\uc2dd\uc73c\ub85c \ubcc0\ud658\uc744 \uc2dc\ub3c4\ud569\ub2c8\ub2e4.<br \/>\n     * \uc608: 03\/1\/3 \u21d2 2003\/01\/03<br \/>\n     * @param strDate<br \/>\n     * @return<br \/>\n     *\/<br \/>\n    private static String format (String strDate) {<br \/>\n        strDate = strDate.trim();<br \/>\n        String yyyy = null;<br \/>\n        String MM = null;<br \/>\n        String dd = null;<br \/>\n        String HH = null;<br \/>\n        String mm = null;<br \/>\n        String ss = null;<br \/>\n        String SSS = null;<\/p>\n<p>        \/\/ \u201c-\u201d or \u201c\/\u201d \uac00 \uc5c6\ub294 \uacbd\uc6b0<br \/>\n        if (strDate.indexOf(\u201c\/\u201d) == -1 &amp;&amp; strDate.indexOf(\u201c-\u201c) == -1) {<br \/>\n            if (strDate.length() == 8) {<br \/>\n                yyyy = strDate.substring(0, 4);<br \/>\n                MM = strDate.substring(4, 6);<br \/>\n                dd = strDate.substring(6, 8);<br \/>\n                return yyyy + \u201c\/\u201d + MM + \u201c\/\u201d + dd;<br \/>\n            } else {<br \/>\n                yyyy = strDate.substring(0, 4);<br \/>\n                MM = strDate.substring(4, 6);<br \/>\n                dd = strDate.substring(6, 8);<br \/>\n                HH = strDate.substring(9, 11);<br \/>\n                mm = strDate.substring(12, 14);<br \/>\n                ss = strDate.substring(15, 17);<br \/>\n                return yyyy + \u201c\/\u201d + MM + \u201c\/\u201d + dd + \u201d \u201d + HH + \u201c:\u201d + mm + \u201c:\u201d<br \/>\n                        +ss;<br \/>\n            }<br \/>\n        }<br \/>\n        StringTokenizer token = new StringTokenizer(strDate, \u201c_\/-:. \u201c);<br \/>\n        StringBuffer result = new StringBuffer();<br \/>\n        for (int i = 0; token.hasMoreTokens(); i++) {<br \/>\n            String temp = token.nextToken();<br \/>\n            switch (i) {<br \/>\n            case 0:\/\/ \ub144\uc758 \ubd80\ubd84<br \/>\n                yyyy = fillString(strDate, temp, \u201cf\u201d, \u201c20\u201d, 4);<br \/>\n                result.append(yyyy);<br \/>\n                break;<br \/>\n            case 1:\/\/ \ub2ec \ubd80\ubd84<br \/>\n                MM = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c\/\u201d + MM);<br \/>\n                break;<br \/>\n            case 2:\/\/ \uc77c \ubd80\ubd84<br \/>\n                dd = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c\/\u201d + dd);<br \/>\n                break;<br \/>\n            case 3:\/\/ \uc2dc\uac04 \ubd80\ubd84<br \/>\n                HH = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201d \u201d + HH);<br \/>\n                break;<br \/>\n            case 4:\/\/ \ubd84 \ubd80\ubd84<br \/>\n                mm = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c:\u201d + mm);<br \/>\n                break;<br \/>\n            case 5:\/\/ \ucd08 \ubd80\ubd84<br \/>\n                ss = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c:\u201d + ss);<br \/>\n                break;<br \/>\n            case 6:\/\/ \ubc00\ub9ac\ucd08 \ubd80\ubd84<br \/>\n                SSS = fillString(strDate, temp, \u201cb\u201d, \u201c0\u201d, 3);<br \/>\n                result.append(\u201c.\u201d + SSS);<br \/>\n                break;<br \/>\n            }<br \/>\n        }<br \/>\n        return result.toString();<br \/>\n    }<\/p>\n<p>    private static String fillString (String strDate, String str,<br \/>\n            String position, String addStr, int len) {<\/p>\n<p>        if (str.length() &gt; len) {<br \/>\n            String mes = strDate + \u201c\uc774 String \ubb38\uc790\uc5f4\uc740 \ub0a0\uc9dc \ubb38\uc790\uc5f4\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4\u201d;<br \/>\n            throw new IllegalStateException (mes);<br \/>\n        }<br \/>\n        return fillString(str, position, addStr, len);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \ubb38\uc790\uc5f4 [str]\uc5d0 \ub300\ud574 \ubcf4\ucda9\ud558\ub294 \ubb38\uc790\uc5f4 [addStr]\uc744 [position]\uc758 \uc704\uce58\ub85c [len]\ub85c<br \/>\n     * \ub9cc\uc871\ud560 \ub54c\uae4c\uc9c0 \uc0bd\uc785\ud569\ub2c8\ub2e4.<br \/>\n     * &lt;p&gt;<br \/>\n     * \uc608: String ss = StringUtil.fillString(\u201caaa\u201d,\u201db\u201d,\u201d0\u2033,7); ss \u21d2 \u201caaa0000\u201d<br \/>\n     *<br \/>\n     * \u203bfillString()\uc740 len\uc5d0 \ub9cc\uc871\ud560 \ub54c\uae4c\uc9c0 \uc0bd\uc785\ud569\ub2c8\ub2e4\ub9cc, addString()\uc740 len\ubd84 \uc0bd\uc785\ud569\ub2c8\ub2e4.<br \/>\n     *<br \/>\n     * @param str \ub300\uc0c1 \ubb38\uc790\uc5f4<br \/>\n     * @param position \uc55e\uc5d0 \uc0bd\uc785 \u21d2 F\/f \ub4a4\uc5d0 \uc0bd\uc785 \u21d2 B\/b<br \/>\n     * @param addStr \uc0bd\uc785 \ud560 \ubb38\uc790\uc5f4<br \/>\n     * @param len \ubcf4\ucda9\ud558\uae30 \uc804\uc758 \uc790\ub9bf\uc218<br \/>\n     * @return \ubcc0\ud658 \ud6c4 \ubb38\uc790\uc5f4. [str]\uc774 null \ub610\ub294 \ube48 \ub9ac\ud130\ub7f4\ub3c4 [addStr]\uc744 [len]<br \/>\n     * \ub9cc\uc871\ud560 \ub54c\uae4c\uc9c0 \uc0bd\uc785\ub41c \uacb0\uacfc\ub97c \ubc18\ud658\ud569\ub2c8\ub2e4.<br \/>\n     *\/<br \/>\n    private static String fillString(String str, String position,<br \/>\n            String addStr, int len) {<br \/>\n        StringBuffer tempBuffer = null;<br \/>\n        if (!isExist(str)) {<br \/>\n            tempBuffer = new StringBuffer();<br \/>\n            for(int i = 0; i &lt; len; i++) {<br \/>\n                tempBuffer.append(addStr);<br \/>\n            }<br \/>\n            return tempBuffer.toString();<br \/>\n        } else if (str.length() != len) {<br \/>\n            tempBuffer = new StringBuffer(str);<br \/>\n            while (len &gt; tempBuffer.length()) {<br \/>\n                if (position.equalsIgnoreCase(&quot;f&quot;)) {<br \/>\n                    tempBuffer.insert(0, addStr);<br \/>\n                } else {<br \/>\n                    tempBuffer.append(addStr);<br \/>\n                }<br \/>\n            }<br \/>\n            return tempBuffer.toString();<br \/>\n        }<br \/>\n        return str;<br \/>\n    }<\/p>\n<p>}<br \/>\n<\/textarea><\/p>","protected":false},"excerpt":{"rendered":"<p>Java \ub9ac\ud50c\ub809\uc158\uc774 \uc27d\uac8c java \ub9ac\ud50c\ub809\uc158 API\ub97c \uc27d\uac8c \uc0ac\uc6a9\ud560 \uc218\uc788\ub294 \uc720\ud2f8\ub9ac\ud2f0 \ud074\ub798\uc2a4 \uc18c\uac1c [\u2026]<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":""},"categories":[19],"tags":[],"_links":{"self":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts\/917"}],"collection":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/comments?post=917"}],"version-history":[{"count":6,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts\/917\/revisions"}],"predecessor-version":[{"id":1896,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/posts\/917\/revisions\/1896"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/media?parent=917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/categories?post=917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/ko\/wp-json\/wp\/v2\/tags?post=917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}