{"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\/vi\/blog\/java\/phan-anh-su-dung","title":{"rendered":"Ph\u1ea3n \u00e1nh Java \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n d\u1ec5 d\u00e0ng"},"content":{"rendered":"<h2 class=\"common_title\">Ph\u1ea3n \u00e1nh Java \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n d\u1ec5 d\u00e0ng<\/h2>\n<p>\n<strong>java<\/strong>c\u1ee7a<strong>s\u1ef1 ph\u1ea3n x\u1ea1<\/strong>Gi\u1edbi thi\u1ec7u l\u1edbp ti\u1ec7n \u00edch cho ph\u00e9p b\u1ea1n d\u1ec5 d\u00e0ng s\u1eed d\u1ee5ng API.\n<\/p>\n<h2 class=\"common_title\"><a name=\"1\">S\u1ef1 ph\u1ea3n chi\u1ebfu l\u00e0 g\u00ec?<\/a><\/h2>\n<p>\n<strong>API ph\u1ea3n \u00e1nh<\/strong>r\u0103ng,&quot;<strong>java.lang.reflect<\/strong>\u201d bao g\u1ed3m trong g\u00f3i,<br \/>\n\u0110\u00e2y l\u00e0 API truy xu\u1ea5t th\u00f4ng tin nh\u01b0 c\u00e1c tr\u01b0\u1eddng v\u00e0 ph\u01b0\u01a1ng th\u1ee9c t\u1eeb c\u00e1c l\u1edbp Java.<br \/>\nC\u00e1c l\u1edbp sau \u0111\u00e2y ch\u1ee7 y\u1ebfu \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng.\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>s\u1ef1 ph\u1ea3n x\u1ea1<\/strong>B\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng , b\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o c\u00e1c l\u1edbp ho\u1eb7c g\u1ecdi c\u00e1c ph\u01b0\u01a1ng th\u1ee9c m\u00e0 kh\u00f4ng c\u1ea7n ph\u1ea3i m\u00e3 h\u00f3a ch\u00fang tr\u1ef1c ti\u1ebfp.<br \/>\nB\u1ea1n c\u00f3 th\u1ec3 t\u1ea1o m\u1ed9t th\u1ec3 hi\u1ec7n c\u1ee7a l\u1edbp t\u1eeb m\u1ed9t chu\u1ed7i ho\u1eb7c th\u1ef1c thi m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c.<\/p>\n<p>B\u1eb1ng c\u00e1ch vi\u1ebft c\u00e1c \u0111\u1ecbnh ngh\u0129a v\u1ec1 t\u00ean l\u1edbp v\u00e0 t\u00ean ph\u01b0\u01a1ng th\u1ee9c trong c\u00e1c t\u1ec7p b\u00ean ngo\u00e0i nh\u01b0 XML, b\u1ea1n c\u00f3 th\u1ec3 \u0111i\u1ec1u ch\u1ec9nh linh ho\u1ea1t \u1ee9ng d\u1ee5ng theo nh\u1eefng thay \u0111\u1ed5i c\u1ee7a m\u00f4i tr\u01b0\u1eddng trong th\u1eddi gian ch\u1ea1y.<br \/>\nN\u00f3 c\u0169ng l\u00e0 m\u1ed9t API r\u1ea5t hi\u1ec7u qu\u1ea3 \u0111\u1ec3 x\u00e2y d\u1ef1ng c\u00e1c \u1ee9ng d\u1ee5ng c\u00f3 t\u00ednh linh ho\u1ea1t cao.\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\">M\u1ee5c \u0111\u00edch ph\u1ea3n \u00e1nh<\/a><\/h2>\n<p>\n<strong>s\u1ef1 ph\u1ea3n x\u1ea1<\/strong>th\u01b0\u1eddng kh\u00f4ng \u0111\u01b0\u1ee3c ng\u01b0\u1eddi d\u00f9ng s\u1eed d\u1ee5ng tr\u1ef1c ti\u1ebfp,<br \/>\nN\u00f3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng r\u1ed9ng r\u00e3i trong c\u00e1c \u1ee9ng d\u1ee5ng web nh\u01b0 Struts v\u00e0 c\u00e1c framework nh\u01b0 \u00e1nh x\u1ea1 O\/R.<br \/>\n<br \/>\nV\u00ed d\u1ee5: khi t\u1ef1 \u0111\u1ed9ng \u0111\u1eb7t d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o m\u00e0n h\u00ecnh web th\u00e0nh thu\u1ed9c t\u00ednh JavaBeans,<br \/>\nN\u00f3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng khi ph\u00e1t h\u00e0nh SQL t\u1ef1 \u0111\u1ed9ng c\u1eadp nh\u1eadt d\u1ef1a tr\u00ean c\u00e1c thu\u1ed9c t\u00ednh JavaBeans.<\/p>\n<p>Ngo\u00e0i ra, c\u00e1c ch\u1ee9c n\u0103ng nh\u01b0 t\u1ea3i \u0111\u1ed9ng v\u00e0 \u0111\u0103ng k\u00fd c\u00e1c ph\u1ea7n b\u1ed5 tr\u1ee3 gi\u00fap m\u1edf r\u1ed9ng ch\u1ee9c n\u0103ng khi \u1ee9ng d\u1ee5ng kh\u1edfi \u0111\u1ed9ng \u0111\u1ec1u c\u00f3 s\u1eb5n.<strong>s\u1ef1 ph\u1ea3n x\u1ea1<\/strong>\u0110i\u1ec1u n\u00e0y c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng \u0111\u1ea1t \u0111\u01b0\u1ee3c b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng .\n<\/p>\n<h2 class=\"common_title\"><a name=\"3\">Ch\u1ea1y m\u1eabu<\/a><\/h2>\n<p>\nH\u00e3y ch\u1ea1y m\u1eabu v\u00e0 tr\u1ea3i nghi\u1ec7m l\u1eadp tr\u00ecnh gi\u1ed1ng nh\u01b0 framework.<br \/>\n<br \/>\n\u1ede \u0111\u00e2y ch\u00fang t\u00f4i s\u1eed d\u1ee5ng l\u1edbp sau<strong>s\u1ef1 ph\u1ea3n x\u1ea1<\/strong>Tr\u00ecnh b\u00e0y c\u00e1ch s\u1eed d\u1ee5ng \u0111\u01a1n gi\u1ea3n c\u1ee7a ti\u1ec7n \u00edch.<br \/>\n<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/Main.txt\" target=\"_blank\"><strong>Main.java<\/strong><\/a>...L\u1edbp \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/BeanUtil.txt\" target=\"_blank\"><strong>BeanUtil.java<\/strong><\/a>...L\u1edbp ti\u1ec7n \u00edch ph\u1ea3n chi\u1ebfu<br \/>\n<a href=\"https:\/\/chat-messenger.com\/other\/java\/FreeSoft.txt\" target=\"_blank\"><strong>FreeSoft.java<\/strong><\/a>...\u0110\u01b0\u1ee3c s\u1eed d\u1ee5ng nh\u01b0 m\u1ed9t s\u1ef1 ph\u1ea3n \u00e1nh trong m\u1ed9t l\u1edbp \u0111\u1ea1i di\u1ec7n cho ph\u1ea7n m\u1ec1m mi\u1ec5n ph\u00ed.<\/p>\n<p><strong>\u25cfKhi th\u1ef1c hi\u1ec7n b\u00ecnh th\u01b0\u1eddng<\/strong>\n<\/p>\n<div class=\"point\">\nSystem.out.println(<span style=\"color: #0000FF;\">\u201c\uff1e\uff1e\uff1eTr\u01b0\u1eddng h\u1ee3p b\u00ecnh th\u01b0\u1eddng\u201d<\/span>); <br \/>\nFreeSoft freeSoft = FreeSoft m\u1edbi(); <br \/>\nfreeSoft.setName<span style=\"color: #0000FF;\">(\u201cTr\u00f2 chuy\u1ec7n&amp;Messenger Tr\u00f2 chuy\u1ec7n v\u00e0 Messenger!!\u201d<\/span>); <br \/>\nfreeSoft.showName(); <br \/>\nfreeSoft.showPrice(0);\n<\/div>\n<p>\n<strong>\u25cfKhi \u0111\u01b0\u1ee3c th\u1ef1c thi b\u1eb1ng c\u00e1ch s\u1eed d\u1ee5ng s\u1ef1 ph\u1ea3n chi\u1ebfu<\/strong><\/p>\n<div class=\"point\">\nSystem.out.println<span style=\"color: #0000FF;\">(\u201c\uff1e\uff1e\uff1eKhi s\u1eed d\u1ee5ng ph\u1ea3n x\u1ea1\u201d<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/ T\u1ea1o m\u1ed9t th\u1ec3 hi\u1ec7n c\u1ee7a l\u1edbp FreeSoft <\/span><br \/>\n\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject = BeanUtil.newInstance<span style=\"color: #0000FF;\">(\u201cFreeSoft\u201d<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/ \u0110\u1eb7t gi\u00e1 tr\u1ecb trong tr\u01b0\u1eddng t\u00ean. <\/span><br \/>\nBeanUtil.setProperty(invokeObject, <span style=\"color: #0000FF;\">&quot;t\u00ean&quot;<\/span> , <span style=\"color: #0000FF;\">\u201cTr\u00f2 chuy\u1ec7n&amp;Messenger Tr\u00f2 chuy\u1ec7n v\u00e0 Messenger!!\u201d<\/span>); <br \/>\n<span style=\"color: #00CC33;\">\/\/ Th\u1ef1c thi ph\u01b0\u01a1ng th\u1ee9c showName() c\u1ee7a FreeSoft. <\/span><br \/>\nBeanUtil.invoke(invokeObject, <span style=\"color: #0000FF;\">&quot;hi\u1ec7n t\u00ean&quot;<\/span>, v\u00f4 gi\u00e1 tr\u1ecb); <br \/>\n<span style=\"color: #00CC33;\">\/\/ Th\u1ef1c thi ph\u01b0\u01a1ng th\u1ee9c showPrice() c\u1ee7a FreeSoft. <\/span><br \/>\n<span style=\"color: #00CC33;\">\/\/ N\u1ebfu ph\u01b0\u01a1ng th\u1ee9c c\u00f3 c\u00e1c \u0111\u1ed1i s\u1ed1, ch\u00fang ph\u1ea3i \u0111\u01b0\u1ee3c truy\u1ec1n d\u01b0\u1edbi d\u1ea1ng m\u1ea3ng ki\u1ec3u \u0110\u1ed1i t\u01b0\u1ee3ng. <\/span><br \/>\nBeanUtil.invoke(invokeObject, <span style=\"color: #0000FF;\">&quot;hi\u1ec3n th\u1ecb gi\u00e1&quot;<\/span>,\u0110\u1ed1i t\u01b0\u1ee3ng m\u1edbi[]{S\u1ed1 nguy\u00ean m\u1edbi(0)});\n<\/div>\n\n<p><strong>\u25cfK\u1ebft qu\u1ea3 th\u1ef1c hi\u1ec7n<\/strong><br \/>\n<br \/>K\u1ebft qu\u1ea3 th\u1ef1c thi \u0111\u1ec1u gi\u1ed1ng nhau d\u00f9 trong tr\u01b0\u1eddng h\u1ee3p b\u00ecnh th\u01b0\u1eddng hay khi s\u1eed d\u1ee5ng s\u1ef1 ph\u1ea3n chi\u1ebfu.<\/p>\n<div class=\"console\">\n&gt;&gt;&gt; Tr\u01b0\u1eddng h\u1ee3p b\u00ecnh th\u01b0\u1eddng<br \/>\n<br \/>T\u00ean ph\u1ea7n m\u1ec1m: Chat&amp;MessengerTr\u00f2 chuy\u1ec7n v\u00e0 nh\u1eafn tin! !<br \/>\n<br \/>Gi\u00e1: 0 y\u00ean<\/p>\n<p>&gt;&gt;&gt; Khi s\u1eed d\u1ee5ng s\u1ef1 ph\u1ea3n chi\u1ebfu<br \/>\n<br \/>T\u00ean ph\u1ea7n m\u1ec1m: Chat&amp;MessengerTr\u00f2 chuy\u1ec7n v\u00e0 nh\u1eafn tin! !<br \/>\n<br \/>Gi\u00e1: 0 y\u00ean\n<\/div>\n\n<h2 class=\"common_title\"><a name=\"4\">Chi ti\u1ebft ph\u01b0\u01a1ng th\u1ee9c BeanUtil<\/a><\/h2>\n<p><a name=\"newInstance(String)\"><!-- --><\/a><\/p>\n<h2>\nphi\u00ean b\u1ea3n m\u1edbi<\/h2>\n<pre>\u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng c\u1ed9ng <b>phi\u00ean b\u1ea3n m\u1edbi<\/b>(String className) n\u00e9m ngo\u1ea1i l\u1ec7<\/pre>\n<dl>\n<dd>T\u1ea1o v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t th\u1ec3 hi\u1ec7n t\u1eeb chu\u1ed7i &quot;className&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>t\u00ean l\u1edbp<\/code> \u2013 T\u00ean l\u1edbp \u0111\u1ea7y \u0111\u1ee7\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>M\u1ed9t phi\u00ean b\u1ea3n m\u1edbi c\u1ee7a t\u00ean l\u1edbp \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Ngo\u1ea1i l\u1ec7<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(String, Object[])\"><!-- --><\/a><\/p>\n<h2>\nphi\u00ean b\u1ea3n m\u1edbi<\/h2>\n<pre>\u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng c\u1ed9ng <b>phi\u00ean b\u1ea3n m\u1edbi<\/b>(String className, Object[] argObj) n\u00e9m ngo\u1ea1i l\u1ec7<\/pre>\n<dl>\n<dd>T\u1ea1o v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t th\u1ec3 hi\u1ec7n t\u1eeb chu\u1ed7i &quot;className&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>t\u00ean l\u1edbp<\/code> \u2013 T\u00ean l\u1edbp \u0111\u1ea7y \u0111\u1ee7<\/dd>\n<dd><code>argObj<\/code> \u2013 \u0110\u1ed1i s\u1ed1 h\u00e0m t\u1ea1o\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>M\u1ed9t phi\u00ean b\u1ea3n m\u1edbi c\u1ee7a t\u00ean l\u1edbp \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Ngo\u1ea1i l\u1ec7<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(Class)\"><!-- --><\/a><\/p>\n<h2>\nphi\u00ean b\u1ea3n m\u1edbi<\/h2>\n<pre>\u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng c\u1ed9ng <b>phi\u00ean b\u1ea3n m\u1edbi<\/b>(L\u1edbp clazz) n\u00e9m Ngo\u1ea1i l\u1ec7<\/pre>\n<dl>\n<dd>T\u1ea1o v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t th\u1ec3 hi\u1ec7n t\u1eeb l\u1edbp &quot;clazz&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>clazz<\/code> - l\u1edbp h\u1ecdc\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>phi\u00ean b\u1ea3n m\u1edbi c\u1ee7a clazz\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Ngo\u1ea1i l\u1ec7<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"newInstance(Class, Object[])\"><!-- --><\/a><\/p>\n<h2>\nphi\u00ean b\u1ea3n m\u1edbi<\/h2>\n<pre>\u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng c\u1ed9ng <b>phi\u00ean b\u1ea3n m\u1edbi<\/b>(Class clazz, Object[] argObj) n\u00e9m Ngo\u1ea1i l\u1ec7<\/pre>\n<dl>\n<dd>T\u1ea1o v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t th\u1ec3 hi\u1ec7n t\u1eeb l\u1edbp &quot;clazz&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>clazz<\/code> - l\u1edbp h\u1ecdc<\/dd>\n<dd><code>argObj<\/code> \u2013 \u0110\u1ed1i s\u1ed1 h\u00e0m t\u1ea1o\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>phi\u00ean b\u1ea3n m\u1edbi c\u1ee7a clazz\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Ngo\u1ea1i l\u1ec7<\/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>kho\u1ea3ng tr\u1ed1ng t\u0129nh c\u00f4ng c\u1ed9ng <b>setProperty<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject, T\u00ean tr\u01b0\u1eddng chu\u1ed7i, Gi\u00e1 tr\u1ecb \u0111\u1ed1i t\u01b0\u1ee3ng) n\u00e9m Ngo\u1ea1i l\u1ec7<\/pre>\n<dl>\n<dd>G\u1ecdi ph\u01b0\u01a1ng th\u1ee9c setter c\u1ee7a tr\u01b0\u1eddng &quot;fieldName&quot; c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng &quot;invokeObject&quot; v\u00e0 l\u01b0u gi\u00e1 tr\u1ecb &quot;value&quot;.<\/p>\n<p> N\u1ebfu kh\u00f4ng c\u00f3 ph\u01b0\u01a1ng th\u1ee9c setter, gi\u00e1 tr\u1ecb s\u1ebd \u0111\u01b0\u1ee3c \u0111\u1eb7t tr\u1ef1c ti\u1ebfp v\u00e0o tr\u01b0\u1eddng. Tuy nhi\u00ean, trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, c\u00f4ng c\u1ee5 s\u1eeda \u0111\u1ed5i truy c\u1eadp c\u1ee7a thu\u1ed9c t\u00ednh \u0111\u00edch ph\u1ea3i \u1edf ch\u1ebf \u0111\u1ed9 c\u00f4ng khai.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>g\u1ecdi \u0111\u1ed1i t\u01b0\u1ee3ng<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng th\u1ef1c hi\u1ec7n<\/dd>\n<dd><code>t\u00ean tr\u01b0\u1eddng<\/code> \u2013 T\u00ean thu\u1ed9c t\u00ednh c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c th\u1ef1c thi<\/dd>\n<dd><code>gi\u00e1 tr\u1ecb<\/code> \u2013 Gi\u00e1 tr\u1ecb c\u1ea7n thi\u1ebft l\u1eadp\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Ngo\u1ea1i l\u1ec7<\/code> \u2013 X\u1ea3y ra ngo\u1ea1i l\u1ec7 sau.\n<\/dd>\n<dd><code>\u0110\u01b0a ra nh\u1eefng m\u1ee5c ti\u00eau ngo\u1ea1i l\u1ec7<\/code> \u2013 N\u1ebfu ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n n\u00e9m ra m\u1ed9t ngo\u1ea1i l\u1ec7\n<\/dd>\n<dd><code>Truy c\u1eadp b\u1ea5t h\u1ee3p ph\u00e1pNgo\u1ea1i l\u1ec7<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng Method n\u00e0y l\u00e0 Java<br \/>\n             Khi ki\u1ec3m so\u00e1t truy c\u1eadp ng\u00f4n ng\u1eef \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u00e0 kh\u00f4ng th\u1ec3 truy c\u1eadp ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n\n<\/dd>\n<dd><code>NoSuchMethodNgo\u1ea1i l\u1ec7<\/code> \u2013 N\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y ph\u01b0\u01a1ng th\u1ee9c c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getProperty(Object, String)\"><!-- --><\/a><\/p>\n<h2>\nnh\u1eadn \u0111\u01b0\u1ee3c t\u00e0i s\u1ea3n<\/h2>\n<pre>\u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng c\u1ed9ng <b>nh\u1eadn \u0111\u01b0\u1ee3c t\u00e0i s\u1ea3n<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject, T\u00ean tr\u01b0\u1eddng chu\u1ed7i) n\u00e9m Ngo\u1ea1i l\u1ec7<\/pre>\n<dl>\n<dd>G\u1ecdi ph\u01b0\u01a1ng th\u1ee9c getter c\u1ee7a tr\u01b0\u1eddng fieldName c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ngg\u1ecdiObject \u0111\u1ec3 l\u1ea5y gi\u00e1 tr\u1ecb.<br \/>\n N\u1ebfu kh\u00f4ng c\u00f3 ph\u01b0\u01a1ng th\u1ee9c getter, gi\u00e1 tr\u1ecb s\u1ebd \u0111\u01b0\u1ee3c l\u1ea5y tr\u1ef1c ti\u1ebfp t\u1eeb tr\u01b0\u1eddng. Tuy nhi\u00ean, trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, c\u00f4ng c\u1ee5 s\u1eeda \u0111\u1ed5i truy c\u1eadp c\u1ee7a thu\u1ed9c t\u00ednh \u0111\u00edch ph\u1ea3i \u1edf ch\u1ebf \u0111\u1ed9 c\u00f4ng khai.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>g\u1ecdi \u0111\u1ed1i t\u01b0\u1ee3ng<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng th\u1ef1c hi\u1ec7n<\/dd>\n<dd><code>t\u00ean tr\u01b0\u1eddng<\/code> \u2013 T\u00ean thu\u1ed9c t\u00ednh c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c th\u1ef1c thi\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1 c\u1ee7a ph\u01b0\u01a1ng th\u1ee9c Getter\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Ngo\u1ea1i l\u1ec7<\/code> \u2013 X\u1ea3y ra ngo\u1ea1i l\u1ec7 sau.\n<\/dd>\n<dd><code>\u0110\u01b0a ra nh\u1eefng m\u1ee5c ti\u00eau ngo\u1ea1i l\u1ec7<\/code> \u2013 N\u1ebfu ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n n\u00e9m ra m\u1ed9t ngo\u1ea1i l\u1ec7\n<\/dd>\n<dd><code>Truy c\u1eadp b\u1ea5t h\u1ee3p ph\u00e1pNgo\u1ea1i l\u1ec7<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng Method n\u00e0y l\u00e0 Java<br \/>\n             Khi ki\u1ec3m so\u00e1t truy c\u1eadp ng\u00f4n ng\u1eef \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u00e0 kh\u00f4ng th\u1ec3 truy c\u1eadp ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 N\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y tr\u01b0\u1eddng c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"invoke(Object, String, Object[])\"><!-- --><\/a><\/p>\n<h2>\ng\u1ecdi<\/h2>\n<pre>\u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng c\u1ed9ng <b>g\u1ecdi<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng InvocateObject, String callMethod, Object[] argObjects) n\u00e9m ra InvocationTargetException, IllegalAccessException, NoSuchMethodException<\/pre>\n<dl>\n<dd>Th\u1ef1c thi ph\u01b0\u01a1ng th\u1ee9c &quot;callMethod&quot; c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng &quot;invokeObject&quot;.<br \/>\n N\u1ebfu c\u00f3 gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1, n\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c l\u1ea5y d\u01b0\u1edbi d\u1ea1ng \u0110\u1ed1i t\u01b0\u1ee3ng.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>g\u1ecdi \u0111\u1ed1i t\u01b0\u1ee3ng<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng th\u1ef1c hi\u1ec7n<\/dd>\n<dd><code>ph\u01b0\u01a1ng th\u1ee9c g\u1ecdi<\/code> \u2013 T\u00ean ph\u01b0\u01a1ng th\u1ee9c \u0111\u01b0\u1ee3c th\u1ef1c thi<\/dd>\n<dd><code>\u0111\u1ed1i t\u01b0\u1ee3ng arg<\/code> \u2013 N\u1ebfu c\u00f3 \u0111\u1ed1i s\u1ed1, chuy\u1ec3n ch\u00fang d\u01b0\u1edbi d\u1ea1ng m\u1ea3ng \u0111\u1ed1i t\u01b0\u1ee3ng. N\u1ebfu kh\u00f4ng c\u00f3 \u0111\u1ed1i s\u1ed1, chuy\u1ec3n null.\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1 khi th\u1ef1c thi &quot;callMethod&quot;\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>\u0110\u01b0a ra nh\u1eefng m\u1ee5c ti\u00eau ngo\u1ea1i l\u1ec7<\/code> \u2013 N\u1ebfu ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n n\u00e9m ra m\u1ed9t ngo\u1ea1i l\u1ec7\n<\/dd>\n<dd><code>Truy c\u1eadp b\u1ea5t h\u1ee3p ph\u00e1pNgo\u1ea1i l\u1ec7<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng Method n\u00e0y l\u00e0 Java<br \/>\n             Khi ki\u1ec3m so\u00e1t truy c\u1eadp ng\u00f4n ng\u1eef \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u00e0 kh\u00f4ng th\u1ec3 truy c\u1eadp ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n\n<\/dd>\n<dd><code>NoSuchMethodNgo\u1ea1i l\u1ec7<\/code> \u2013 N\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y ph\u01b0\u01a1ng th\u1ee9c c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"findMethod(Object, String, Object[])\"><!-- --><\/a><\/p>\n<h2>\nph\u01b0\u01a1ng th\u1ee9c t\u00ecm ki\u1ebfm<\/h2>\n<pre>ph\u01b0\u01a1ng ph\u00e1p t\u0129nh c\u00f4ng khai <b>ph\u01b0\u01a1ng th\u1ee9c t\u00ecm ki\u1ebfm<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng InvocateObject, String callMethod, Object[] argObjects) n\u00e9m ra ngo\u1ea1i l\u1ec7 NoSuchMethodException<\/pre>\n<dl>\n<dd>T\u00ecm ki\u1ebfm ph\u01b0\u01a1ng th\u1ee9c &#039;callMethod&#039; c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng &#039;invokeObject&#039;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>g\u1ecdi \u0111\u1ed1i t\u01b0\u1ee3ng<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng th\u1ef1c hi\u1ec7n<\/dd>\n<dd><code>ph\u01b0\u01a1ng th\u1ee9c g\u1ecdi<\/code> \u2013 T\u00ean ph\u01b0\u01a1ng th\u1ee9c c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c th\u1ef1c thi<\/dd>\n<dd><code>\u0111\u1ed1i t\u01b0\u1ee3ng arg<\/code> \u2013 N\u1ebfu c\u00f3 \u0111\u1ed1i s\u1ed1, chuy\u1ec3n ch\u00fang d\u01b0\u1edbi d\u1ea1ng m\u1ea3ng \u0111\u1ed1i t\u01b0\u1ee3ng. N\u1ebfu kh\u00f4ng c\u00f3 \u0111\u1ed1i s\u1ed1, chuy\u1ec3n null.\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>\u0110\u1ed1i t\u01b0\u1ee3ng Ph\u01b0\u01a1ng th\u1ee9c kh\u1edbp v\u1edbi c\u00e1c \u0111i\u1ec1u ki\u1ec7n \u0111\u1ed1i s\u1ed1 \u0111\u00e3 ch\u1ec9 \u0111\u1ecbnh\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>NoSuchMethodNgo\u1ea1i l\u1ec7<\/code> \u2013 N\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y ph\u01b0\u01a1ng th\u1ee9c ph\u00f9 h\u1ee3p ho\u1eb7c n\u1ebfu t\u00ean l\u00e0 \u201c\u201d ho\u1eb7c \u201c\u201d<\/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>kho\u1ea3ng tr\u1ed1ng t\u0129nh c\u00f4ng c\u1ed9ng <b>setField<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject, T\u00ean tr\u01b0\u1eddng chu\u1ed7i, Gi\u00e1 tr\u1ecb \u0111\u1ed1i t\u01b0\u1ee3ng) n\u00e9m IllegalAccessException, NoSuchFieldException<\/pre>\n<dl>\n<dd>L\u01b0u tr\u1eef gi\u00e1 tr\u1ecb &quot;gi\u00e1 tr\u1ecb&quot; trong t\u00ean tr\u01b0\u1eddng &quot;fieldName&quot; c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c th\u1ef1c thi &quot;invokeObject&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>g\u1ecdi \u0111\u1ed1i t\u01b0\u1ee3ng<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng th\u1ef1c hi\u1ec7n<\/dd>\n<dd><code>t\u00ean tr\u01b0\u1eddng<\/code> \u2013 T\u00ean tr\u01b0\u1eddng c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c th\u1ef1c thi<\/dd>\n<dd><code>gi\u00e1 tr\u1ecb<\/code> \u2013 Gi\u00e1 tr\u1ecb c\u1ea7n thi\u1ebft l\u1eadp\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Truy c\u1eadp b\u1ea5t h\u1ee3p ph\u00e1pNgo\u1ea1i l\u1ec7<\/code> \u2013 Tr\u01b0\u1eddng d\u1ef1a tr\u00ean \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh (ho\u1eb7c l\u1edbp con ho\u1eb7c tr\u00ecnh tri\u1ec3n khai c\u1ee7a n\u00f3)<br \/>\n             kh\u00f4ng ph\u1ea3i l\u00e0 m\u1ed9t phi\u00ean b\u1ea3n c\u1ee7a l\u1edbp ho\u1eb7c giao di\u1ec7n m\u00e0 n\u00f3 khai b\u00e1o ho\u1eb7c n\u1ebfu qu\u00e1 tr\u00ecnh chuy\u1ec3n \u0111\u1ed5i h\u1ee7y g\u00f3i kh\u00f4ng th\u00e0nh c\u00f4ng\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 N\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y tr\u01b0\u1eddng c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getField(Object, String)\"><!-- --><\/a><\/p>\n<h2>\ngetField<\/h2>\n<pre>\u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng c\u1ed9ng <b>getField<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject, T\u00ean tr\u01b0\u1eddng chu\u1ed7i) n\u00e9m IllegalAccessException, NoSuchFieldException<\/pre>\n<dl>\n<dd>L\u1ea5y gi\u00e1 tr\u1ecb c\u1ee7a t\u00ean tr\u01b0\u1eddng &quot;fieldName&quot; c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c th\u1ef1c thi &quot;invokeObject&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>g\u1ecdi \u0111\u1ed1i t\u01b0\u1ee3ng<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng th\u1ef1c hi\u1ec7n<\/dd>\n<dd><code>t\u00ean tr\u01b0\u1eddng<\/code> \u2013 T\u00ean tr\u01b0\u1eddng c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c th\u1ef1c thi\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Truy c\u1eadp b\u1ea5t h\u1ee3p ph\u00e1pNgo\u1ea1i l\u1ec7<\/code> \u2013 Tr\u01b0\u1eddng d\u1ef1a tr\u00ean \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh (ho\u1eb7c l\u1edbp con ho\u1eb7c tr\u00ecnh tri\u1ec3n khai c\u1ee7a n\u00f3)<br \/>\n             kh\u00f4ng ph\u1ea3i l\u00e0 m\u1ed9t phi\u00ean b\u1ea3n c\u1ee7a l\u1edbp ho\u1eb7c giao di\u1ec7n m\u00e0 n\u00f3 khai b\u00e1o ho\u1eb7c n\u1ebfu qu\u00e1 tr\u00ecnh chuy\u1ec3n \u0111\u1ed5i h\u1ee7y g\u00f3i kh\u00f4ng th\u00e0nh c\u00f4ng\n<\/dd>\n<dd><code>NoSuchFieldException<\/code> \u2013 N\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y tr\u01b0\u1eddng c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"hasField(Object, String)\"><!-- --><\/a><\/p>\n<h2>\nhasField<\/h2>\n<pre>boolean t\u0129nh c\u00f4ng khai <b>hasField<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng \u0111\u1ed1i t\u01b0\u1ee3ng, T\u00ean tr\u01b0\u1eddng chu\u1ed7i) n\u00e9m Ngo\u1ea1i l\u1ec7<\/pre>\n<dl>\n<dd>Ki\u1ec3m tra xem \u0111\u1ed1i t\u01b0\u1ee3ng &#039;\u0111\u1ed1i t\u01b0\u1ee3ng&#039; c\u00f3 khai b\u00e1o t\u00ean tr\u01b0\u1eddng &#039;fieldName&#039; hay kh\u00f4ng.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>s\u1ef1 v\u1eadt<\/code> \u2013 \u0110\u1ed1i t\u01b0\u1ee3ng c\u1ea7n ki\u1ec3m tra<\/dd>\n<dd><code>t\u00ean tr\u01b0\u1eddng<\/code> \u2013 T\u00ean tr\u01b0\u1eddng c\u1ea7n ki\u1ec3m tra\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>\u0111\u00fang n\u1ebfu \u0111\u01b0\u1ee3c khai b\u00e1o\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Ngo\u1ea1i l\u1ec7<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getAllFields(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetAllFields<\/h2>\n<pre>java.util.TreeSet t\u0129nh c\u00f4ng khai <b>getAllFields<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng) n\u00e9m Ngo\u1ea1i l\u1ec7<\/pre>\n<dl>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>s\u1ef1 v\u1eadt<\/code> &#8211;\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/b>\n<\/dt>\n<dd><code>Ngo\u1ea1i l\u1ec7<\/code><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getShortClassName(Object)\"><!-- --><\/a><\/p>\n<h2>\ngetShortClassName<\/h2>\n<pre>Chu\u1ed7i t\u0129nh c\u00f4ng khai <b>getShortClassName<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng \u0111\u1ed1i t\u01b0\u1ee3ng)<\/pre>\n<dl>\n<dd>L\u1ea5y t\u00ean l\u1edbp kh\u00f4ng \u0111\u1ee7 ti\u00eau chu\u1ea9n t\u1eeb m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>s\u1ef1 v\u1eadt<\/code> &#8211;\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/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>Chu\u1ed7i t\u0129nh c\u00f4ng khai <b>getShortClassName<\/b>(T\u00ean l\u1edbp chu\u1ed7i)<\/pre>\n<dl>\n<dd>L\u1ea5y t\u00ean l\u1edbp t\u1eeb t\u00ean \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>t\u00ean l\u1edbp<\/code> &#8211;\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd><\/dd>\n<\/dl>\n<\/dd>\n<\/dl>\n<hr>\n<p><a name=\"getFieldName(String)\"><!-- --><\/a><\/p>\n<h2>\nl\u1ea5y t\u00ean tr\u01b0\u1eddng<\/h2>\n<pre>Chu\u1ed7i t\u0129nh c\u00f4ng khai <b>l\u1ea5y t\u00ean tr\u01b0\u1eddng<\/b>(T\u00ean ph\u01b0\u01a1ng th\u1ee9c chu\u1ed7i)<\/pre>\n<dl>\n<dd>Thay \u0111\u1ed5i t\u00ean tr\u01b0\u1eddng t\u1eeb t\u00ean ph\u01b0\u01a1ng th\u1ee9c. Ph\u1ea3i tu\u00e2n th\u1ee7 c\u00e1c quy \u01b0\u1edbc c\u1ee7a JavaBeans.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>t\u00ean ph\u01b0\u01a1ng th\u1ee9c<\/code> &#8211;\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/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>boolean t\u0129nh c\u00f4ng khai <b>isClassExist<\/b>(T\u00ean l\u1edbp chu\u1ed7i)<\/pre>\n<dl>\n<dd>X\u00e1c minh r\u1eb1ng t\u00ean \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n &quot;className&quot; l\u00e0 t\u00ean l\u1edbp hi\u1ec7n c\u00f3.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>t\u00ean l\u1edbp<\/code> &#8211;\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/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>B\u1ed9 m\u00f4 t\u1ea3 thu\u1ed9c t\u00ednh t\u0129nh c\u00f4ng khai[] <b>getPropertyDescriptors<\/b>(\u0110\u1ed1i t\u01b0\u1ee3ng) n\u00e9m IntrospectionException<\/pre>\n<dl>\n<dd>Tr\u1ea3 v\u1ec1 m\u1ed9t B\u1ed9 m\u00f4 t\u1ea3 thu\u1ed9c t\u00ednh ch\u1ee9a th\u00f4ng tin \u0111\u1ed1i t\u01b0\u1ee3ng cho &quot;\u0111\u1ed1i t\u01b0\u1ee3ng&quot;.<\/p>\n<\/dd>\n<dd>\n<dl>\n<dt><b>Th\u00f4ng s\u1ed1:<\/b><\/dt>\n<dd><code>s\u1ef1 v\u1eadt<\/code> &#8211;\n<\/dd>\n<dt><b>Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1:<\/b><\/dt>\n<dd>\n<\/dd>\n<dt><b>ngo\u1ea1i l\u1ec7:<\/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\">M\u00e3 ngu\u1ed3n BeanUtil<\/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 * L\u1edbp ti\u1ec7n \u00edch cho ph\u00e9p b\u1ea1n d\u1ec5 d\u00e0ng s\u1eed d\u1ee5ng API ph\u1ea3n chi\u1ebfu c\u1ee7a Java<br \/>\n *\/<br \/>\nl\u1edbp c\u00f4ng khai BeanUtil {<\/p>\n<p>    \/**   *\/<br \/>\n    chu\u1ed7i t\u0129nh cu\u1ed1i c\u00f9ng ri\u00eang t\u01b0 GET = \u201cGET\u201d;<br \/>\n    \/**   *\/<br \/>\n    chu\u1ed7i t\u0129nh cu\u1ed1i c\u00f9ng ri\u00eang t\u01b0 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-\u300enewInstance\u300f<br \/>\n    \/**<br \/>\n     * T\u1ea1o v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t th\u1ec3 hi\u1ec7n t\u1eeb chu\u1ed7i &quot;className&quot;.<br \/>\n     * @param className t\u00ean l\u1edbp \u0111\u1ea7y \u0111\u1ee7<br \/>\n     * @return phi\u00ean b\u1ea3n m\u1edbi c\u1ee7a t\u00ean l\u1edbp \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n<br \/>\n     * @throws Ngo\u1ea1i l\u1ec7<br \/>\n     *\/<br \/>\n    \u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng khai newInstance(String className) n\u00e9m Ngo\u1ea1i l\u1ec7 {<br \/>\n        th\u1eed {<br \/>\n            tr\u1ea3 v\u1ec1 Class.forName(className).newInstance();<br \/>\n        } b\u1eaft (NoClassDefFoundError e) {<br \/>\n            System.err.println(\u201cNoClassDefFoundError : \u201d + className);<br \/>\n            n\u00e9m e;<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * T\u1ea1o v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t th\u1ec3 hi\u1ec7n t\u1eeb chu\u1ed7i &quot;className&quot;.<br \/>\n     * @param className t\u00ean l\u1edbp \u0111\u1ea7y \u0111\u1ee7<br \/>\n     * \u0110\u1ed1i s\u1ed1 h\u00e0m t\u1ea1o @param argObj<br \/>\n     * @return phi\u00ean b\u1ea3n m\u1edbi c\u1ee7a t\u00ean l\u1edbp \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n<br \/>\n     * @throws Ngo\u1ea1i l\u1ec7<br \/>\n     *\/<br \/>\n    \u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng khai newInstance(String className, Object[] argObj)<br \/>\n            n\u00e9m ngo\u1ea1i l\u1ec7 {<br \/>\n        L\u1edbp[] argClass = L\u1edbp m\u1edbi[argObj.length];<br \/>\n        for (int i = 0; i &lt; argObj.length; i++) {<br \/>\n            argClass[i] = argObj[i].getClass();<br \/>\n        }<br \/>\n        Tr\u00ecnh x\u00e2y d\u1ef1ng c = Class.forName(className).getConstructor(argClass);<br \/>\n        return c.newInstance(argObj);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * T\u1ea1o v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t th\u1ec3 hi\u1ec7n t\u1eeb l\u1edbp &#039;clazz&#039;.<br \/>\n     * @param l\u1edbp clazz<br \/>\n     * @return phi\u00ean b\u1ea3n m\u1edbi c\u1ee7a clazz<br \/>\n     * @throws Ngo\u1ea1i l\u1ec7<br \/>\n     *\/<br \/>\n    public static Object newInstance(Class clazz) n\u00e9m Ngo\u1ea1i l\u1ec7 {<br \/>\n        return clazz.newInstance();<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * T\u1ea1o v\u00e0 tr\u1ea3 v\u1ec1 m\u1ed9t th\u1ec3 hi\u1ec7n t\u1eeb l\u1edbp &#039;clazz&#039;.<br \/>\n     * @param l\u1edbp clazz<br \/>\n     * \u0110\u1ed1i s\u1ed1 h\u00e0m t\u1ea1o @param argObj<br \/>\n     * @return phi\u00ean b\u1ea3n m\u1edbi c\u1ee7a clazz<br \/>\n     * @throws Ngo\u1ea1i l\u1ec7<br \/>\n     *\/<br \/>\n    public static Object newInstance(Class clazz, Object[] argObj)<br \/>\n            n\u00e9m ngo\u1ea1i l\u1ec7 {<br \/>\n        L\u1edbp[] argClass = L\u1edbp m\u1edbi[argObj.length];<br \/>\n        for (int i = 0; i &lt; argObj.length; i++) {<br \/>\n            argClass[i] = argObj[i].getClass();<br \/>\n        }<br \/>\n        H\u00e0m t\u1ea1o c = clazz.getConstructor(argClass);<br \/>\n        return c.newInstance(argObj);<br \/>\n    }<\/p>\n<p>    \/\/ ---------------------&quot;Ph\u01b0\u01a1ng ph\u00e1p&quot;<br \/>\n    \/**<br \/>\n     * Ph\u01b0\u01a1ng th\u1ee9c setter c\u1ee7a tr\u01b0\u1eddng \u201cfieldName\u201d c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng \u201cinvokeObject\u201d<br \/>\n     * G\u1ecdi, l\u01b0u tr\u1eef gi\u00e1 tr\u1ecb &#039;gi\u00e1 tr\u1ecb&#039;.<br \/>\n     * &lt;br&gt;<br \/>\n     * N\u1ebfu kh\u00f4ng c\u00f3 ph\u01b0\u01a1ng th\u1ee9c setter, h\u00e3y \u0111\u1eb7t gi\u00e1 tr\u1ecb tr\u1ef1c ti\u1ebfp v\u00e0o tr\u01b0\u1eddng.<br \/>\n     * Tuy nhi\u00ean, trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, c\u00f4ng c\u1ee5 s\u1eeda \u0111\u1ed5i quy\u1ec1n truy c\u1eadp c\u1ee7a thu\u1ed9c t\u00ednh \u0111\u00edch ph\u1ea3i \u1edf ch\u1ebf \u0111\u1ed9 c\u00f4ng khai.<br \/>\n     * @paramg\u1ecdiObject \u0110\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param fieldName T\u00ean thu\u1ed9c t\u00ednh c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * Gi\u00e1 tr\u1ecb gi\u00e1 tr\u1ecb @param c\u1ea7n \u0111\u1eb7t<br \/>\n     * @throws Ngo\u1ea1i l\u1ec7 Ngo\u1ea1i l\u1ec7 sau x\u1ea3y ra.<br \/>\n     * @throws InvocationTargetException n\u1ebfu ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n n\u00e9m ra m\u1ed9t ngo\u1ea1i l\u1ec7<br \/>\n     * @throws IllegalAccessException N\u1ebfu \u0111\u1ed1i t\u01b0\u1ee3ng Method n\u00e0y l\u00e0 Java<br \/>\n     * Khi ki\u1ec3m so\u00e1t truy c\u1eadp ng\u00f4n ng\u1eef \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u00e0 kh\u00f4ng th\u1ec3 truy c\u1eadp ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n<br \/>\n     * @throws NoSuchMethodException n\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y ph\u01b0\u01a1ng th\u1ee9c c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<br \/>\n     *\/<br \/>\n    public static void setProperty(Object g\u1ecdiObject, String fieldName,<br \/>\n            Gi\u00e1 tr\u1ecb \u0111\u1ed1i t\u01b0\u1ee3ng) n\u00e9m Ngo\u1ea1i l\u1ec7 {<br \/>\n        th\u1eed {<br \/>\n            Ph\u01b0\u01a1ng th\u1ee9c ph\u01b0\u01a1ng th\u1ee9c = searchMethod(invokeObject, fieldName, SET);<br \/>\n            L\u1edbp [] paramClasses = ph\u01b0\u01a1ng th\u1ee9c.getParameterTypes();<br \/>\n            \u0110\u1ed1i t\u01b0\u1ee3ng [] valueArray = null;<br \/>\n            if (paramClasses[0].isInstance(value)) {<br \/>\n                \/\/ Kh\u00f4ng chuy\u1ec3n \u0111\u1ed5i n\u1ebfu \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c \u0111\u1eb7t l\u00e0 l\u1edbp con c\u1ee7a l\u1edbp \u0111\u1ed1i s\u1ed1.<br \/>\n                valueArray = \u0110\u1ed1i t\u01b0\u1ee3ng m\u1edbi[] { value };<br \/>\n            } kh\u00e1c {<br \/>\n                valueArray = \u0110\u1ed1i t\u01b0\u1ee3ng m\u1edbi[] { convObject(value, paramClasses[0]<br \/>\n                        .getName()) };<br \/>\n            }<br \/>\n            ph\u01b0\u01a1ng th\u1ee9c.invoke(invokeObject, valueArray);<br \/>\n        } b\u1eaft (NoSuchMethodException e) {<br \/>\n            th\u1eed {<br \/>\n                \/\/ N\u1ebfu kh\u00f4ng c\u00f3 ph\u01b0\u01a1ng th\u1ee9c setter, h\u00e3y \u0111\u1eb7t n\u00f3 tr\u1ef1c ti\u1ebfp v\u00e0o tr\u01b0\u1eddng.<br \/>\n                setField(invokeObject, fieldName, value);<br \/>\n            } b\u1eaft (NoSuchFieldException fe) {<br \/>\n                Chu\u1ed7i errorMes = \u201c\\nClass\u201d + getShortClassName(invokeObject)<br \/>\n                        + \u201cis\u201d + \u201ccho tr\u01b0\u1eddng \u201c\u201d + fieldName + \u201c\u201d\\n\u201d<br \/>\n                        + \u201cKh\u00f4ng c\u00f3 ph\u01b0\u01a1ng th\u1ee9c setter n\u00e0o c\u00f3 th\u1ec3 truy c\u1eadp \u0111\u01b0\u1ee3c v\u00e0.\u201d<br \/>\n                        + \u201cTr\u01b0\u1eddng \u201c\u201d + T\u00ean tr\u01b0\u1eddng<br \/>\n                        + \u201c\u201d c\u0169ng kh\u00f4ng \u0111\u01b0\u1ee3c c\u00f4ng khai. \u201d + \u201c\u201d;<br \/>\n                n\u00e9m IllegalAccessException m\u1edbi (errorMes);<br \/>\n            }<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ph\u01b0\u01a1ng th\u1ee9c Getter c\u1ee7a tr\u01b0\u1eddng fieldName c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ngg\u1ecdiObject<br \/>\n     * Nh\u1eadn gi&aacute; tr\u1ecb cu\u1ed9c g\u1ecdi. &lt;br&gt;<br \/>\n     * N\u1ebfu kh\u00f4ng c\u00f3 ph\u01b0\u01a1ng th\u1ee9c getter, gi\u00e1 tr\u1ecb s\u1ebd \u0111\u01b0\u1ee3c l\u1ea5y tr\u1ef1c ti\u1ebfp t\u1eeb tr\u01b0\u1eddng.<br \/>\n     * Tuy nhi\u00ean, trong tr\u01b0\u1eddng h\u1ee3p n\u00e0y, c\u00f4ng c\u1ee5 s\u1eeda \u0111\u1ed5i quy\u1ec1n truy c\u1eadp c\u1ee7a thu\u1ed9c t\u00ednh \u0111\u00edch ph\u1ea3i \u1edf ch\u1ebf \u0111\u1ed9 c\u00f4ng khai.<br \/>\n     * @paramg\u1ecdiObject \u0110\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param fieldName T\u00ean thu\u1ed9c t\u00ednh c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @return gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1 c\u1ee7a ph\u01b0\u01a1ng th\u1ee9c getter<br \/>\n     * @throws Ngo\u1ea1i l\u1ec7 Ngo\u1ea1i l\u1ec7 sau x\u1ea3y ra.<br \/>\n     * @throws InvocationTargetException n\u1ebfu ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n n\u00e9m ra m\u1ed9t ngo\u1ea1i l\u1ec7<br \/>\n     * @throws IllegalAccessException N\u1ebfu \u0111\u1ed1i t\u01b0\u1ee3ng Method n\u00e0y l\u00e0 Java<br \/>\n     * Khi ki\u1ec3m so\u00e1t truy c\u1eadp ng\u00f4n ng\u1eef \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u00e0 kh\u00f4ng th\u1ec3 truy c\u1eadp ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n<br \/>\n     * @throws NoSuchFieldException n\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y tr\u01b0\u1eddng c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<br \/>\n     *\/<br \/>\n    \u0110\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng khai getProperty(\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject, T\u00ean tr\u01b0\u1eddng chu\u1ed7i)<br \/>\n            n\u00e9m ngo\u1ea1i l\u1ec7 {<br \/>\n        th\u1eed {<br \/>\n            Ph\u01b0\u01a1ng th\u1ee9c ph\u01b0\u01a1ng th\u1ee9c = searchMethod(invokeObject, fieldName, GET);<br \/>\n            ph\u01b0\u01a1ng th\u1ee9c tr\u1ea3 v\u1ec1.invoke(invokeObject, null);<br \/>\n        } b\u1eaft (NoSuchMethodException e) {<br \/>\n            tr\u1ea3 v\u1ec1 getField(invokeObject, fieldName);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Th\u1ef1c thi ph\u01b0\u01a1ng th\u1ee9c &quot;callMethod&quot; c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng &quot;invokeObject&quot;.<br \/>\n     * N\u1ebfu c\u00f3 gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1, n\u00f3 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c l\u1ea5y d\u01b0\u1edbi d\u1ea1ng lo\u1ea1i \u0110\u1ed1i t\u01b0\u1ee3ng.<br \/>\n     * @paramg\u1ecdiObject \u0110\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param callMethod T\u00ean ph\u01b0\u01a1ng th\u1ee9c s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param argObjects N\u1ebfu c\u00f3 m\u1ed9t \u0111\u1ed1i s\u1ed1, h\u00e3y chuy\u1ec3n n\u00f3 d\u01b0\u1edbi d\u1ea1ng m\u1ed9t m\u1ea3ng \u0111\u1ed1i t\u01b0\u1ee3ng.<br \/>\n     * Truy\u1ec1n null n\u1ebfu kh\u00f4ng c\u00f3 \u0111\u1ed1i s\u1ed1.<br \/>\n     * @return Gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1 khi th\u1ef1c thi &quot;callMethod&quot;<br \/>\n     * @throws InvocationTargetException n\u1ebfu ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n n\u00e9m ra m\u1ed9t ngo\u1ea1i l\u1ec7<br \/>\n     * @throws IllegalAccessException N\u1ebfu \u0111\u1ed1i t\u01b0\u1ee3ng Method n\u00e0y l\u00e0 Java<br \/>\n     * Khi ki\u1ec3m so\u00e1t truy c\u1eadp ng\u00f4n ng\u1eef \u0111\u01b0\u1ee3c tri\u1ec3n khai v\u00e0 kh\u00f4ng th\u1ec3 truy c\u1eadp ph\u01b0\u01a1ng th\u1ee9c c\u01a1 b\u1ea3n<br \/>\n     * @throws NoSuchMethodException n\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y ph\u01b0\u01a1ng th\u1ee9c c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<br \/>\n     *\/<br \/>\n    G\u1ecdi \u0111\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng khai (\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject, Ph\u01b0\u01a1ng th\u1ee9c g\u1ecdi chu\u1ed7i,<br \/>\n            Object[] argObjects) n\u00e9m InvocationTargetException,<br \/>\n            IllegalAccessException, NoSuchMethodException {<br \/>\n        Ph\u01b0\u01a1ng th\u1ee9c ph\u01b0\u01a1ng th\u1ee9c = findMethod(invokeObject, callMethod, argObjects);<br \/>\n        ph\u01b0\u01a1ng th\u1ee9c tr\u1ea3 v\u1ec1.invoke(invokeObject, argObjects);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * T\u00ecm ki\u1ebfm ph\u01b0\u01a1ng th\u1ee9c &#039;callMethod&#039; c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng &#039;invokeObject&#039;.<br \/>\n     * @paramg\u1ecdiObject \u0110\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param callMethod T\u00ean ph\u01b0\u01a1ng th\u1ee9c c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param argObjects N\u1ebfu c\u00f3 m\u1ed9t \u0111\u1ed1i s\u1ed1, h\u00e3y chuy\u1ec3n n\u00f3 d\u01b0\u1edbi d\u1ea1ng m\u1ed9t m\u1ea3ng \u0111\u1ed1i t\u01b0\u1ee3ng.<br \/>\n     * Truy\u1ec1n null n\u1ebfu kh\u00f4ng c\u00f3 \u0111\u1ed1i s\u1ed1.<br \/>\n     * \u0110\u1ed1i t\u01b0\u1ee3ng Ph\u01b0\u01a1ng th\u1ee9c @return kh\u1edbp v\u1edbi c\u00e1c \u0111i\u1ec1u ki\u1ec7n \u0111\u1ed1i s\u1ed1 \u0111\u00e3 ch\u1ec9 \u0111\u1ecbnh<br \/>\n     * @throws NoSuchMethodException N\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y ph\u01b0\u01a1ng th\u1ee9c n\u00e0o ph\u00f9 h\u1ee3p,<br \/>\n     * Ho\u1eb7c n\u1ebfu t\u00ean l\u00e0 \u201c &quot; ho\u1eb7c &quot; &quot;trong tr\u01b0\u1eddng h\u1ee3p<br \/>\n     *\/<br \/>\n    Ph\u01b0\u01a1ng th\u1ee9c t\u0129nh c\u00f4ng khai findMethod(Object g\u1ecdiObject, String callMethod,<br \/>\n            Object[] argObjects) n\u00e9m NoSuchMethodException {<br \/>\n        L\u1edbp[] paramClasses = null;<br \/>\n        Ph\u01b0\u01a1ng th\u1ee9c [] ph\u01b0\u01a1ng th\u1ee9c =g\u1ecdiObject.getClass().getMethods();<br \/>\n        top: for (int i = 0; i &lt; Method.length; i++) {<br \/>\n            if (methods[i].getName().equals(callMethod)) {<br \/>\n                n\u1ebfu (argObjects == null<br \/>\n                        &amp;&amp; Methods[i].getParameterTypes().length == 0) {<br \/>\n                    ph\u01b0\u01a1ng th\u1ee9c tr\u1ea3 v\u1ec1[i];<br \/>\n                }<br \/>\n                n\u1ebfu (argObjects == null) {<br \/>\n                    Ti\u1ebfp t\u1ee5c;<br \/>\n                }<br \/>\n                paramClasses = c\u00e1c ph\u01b0\u01a1ng th\u1ee9c[i].getParameterTypes();<br \/>\n                if (paramClasses.length == argObjects.length) {<br \/>\n                    \/\/ X\u00e1c th\u1ef1c t\u1ea5t c\u1ea3 c\u00e1c ki\u1ec3u danh s\u00e1ch tham s\u1ed1 v\u00e0 ki\u1ec3u \u0111\u1ed1i s\u1ed1<br \/>\n                    for (int j = 0; j &lt; paramClasses.length; j++) {<br \/>\n                        L\u1edbp paramClass = paramClasses[j];<br \/>\n                        \u0110\u1ed1i t\u01b0\u1ee3ng argObj = argObjects[j];<br \/>\n                        \/\/ N\u1ebfu ki\u1ec3u \u0111\u1ed1i s\u1ed1 l\u00e0 nguy\u00ean th\u1ee7y th\u00ec \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u1ed1i s\u1ed1<br \/>\n                        \/\/ kh\u00f4ng ph\u1ea3i l\u00e0 null v\u00e0 l\u00e0 nguy\u00ean th\u1ee7y<br \/>\n                        \/\/ N\u1ebfu l\u00e0 l\u1edbp con c\u1ee7a Number th\u00ec kh\u00f4ng sao.<br \/>\n                        n\u1ebfu (argObj == null) {<br \/>\n                            Ti\u1ebfp t\u1ee5c;<br \/>\n                        }<br \/>\n                        if (paramClass.isPrimitive()<br \/>\n                                &amp;&amp; (argObj instanceof S\u1ed1 || argObj<br \/>\n                                        .getClass().isPrimitive())) {<br \/>\n                            Ti\u1ebfp t\u1ee5c;<br \/>\n                        }<br \/>\n                        if (!paramClass.isInstance(argObj)) {<br \/>\n                            \/\/ Ti\u1ebfn h\u00e0nh ph\u01b0\u01a1ng ph\u00e1p ti\u1ebfp theo khi c\u00e1c lo\u1ea1i kh\u00f4ng t\u01b0\u01a1ng th\u00edch v\u1edbi chuy\u1ec3n \u0111\u1ed5i ng\u1ea7m \u0111\u1ecbnh<br \/>\n                            ti\u1ebfp t\u1ee5c h\u00e0ng \u0111\u1ea7u;<br \/>\n                        }<br \/>\n                    }<br \/>\n                    ph\u01b0\u01a1ng th\u1ee9c tr\u1ea3 v\u1ec1[i];<br \/>\n                }<br \/>\n            }<br \/>\n        }<br \/>\n        Chu\u1ed7i paramLength = (paramClasses != null) ? S\u1ed1 nguy\u00ean<br \/>\n                .toString(paramClasses.length): \u201c\u201d;<br \/>\n        Chu\u1ed7i errorMes = getShortClassName(invokeObject) + \u201cph\u01b0\u01a1ng th\u1ee9c\u201d<br \/>\n                + callMethod + \u201cKh\u00f4ng c\u00f3.\u201d + \u201c[ paramClasses.length ] = \u201d<br \/>\n                + paramLength + \u201c,[ argObjects.length ] = \u201d + argObjects.length<br \/>\n                + &#8220;&#8221;;<br \/>\n        n\u00e9m NoSuchMethodException m\u1edbi (errorMes);<br \/>\n    }<\/p>\n<p>    \/\/ ----------------------&quot;C\u00e1nh \u0111\u1ed3ng&quot;<br \/>\n    \/**<br \/>\n     * Gi\u00e1 tr\u1ecb cho t\u00ean tr\u01b0\u1eddng &quot;fieldName&quot; c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng &quot;invokeObject&quot; s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * L\u01b0u tr\u1eef &quot;gi\u00e1 tr\u1ecb&quot;.<br \/>\n     * @paramg\u1ecdiObject \u0110\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param fieldName T\u00ean tr\u01b0\u1eddng c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * Gi\u00e1 tr\u1ecb gi\u00e1 tr\u1ecb @param c\u1ea7n \u0111\u1eb7t<br \/>\n     * @throws IllegalAccessException N\u1ebfu \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh l\u00e0<br \/>\n     * tr\u01b0\u1eddng (ho\u1eb7c l\u1edbp con ho\u1eb7c ng\u01b0\u1eddi tri\u1ec3n khai c\u1ee7a n\u00f3)<br \/>\n     * N\u1ebfu n\u00f3 kh\u00f4ng ph\u1ea3i l\u00e0 m\u1ed9t th\u1ec3 hi\u1ec7n c\u1ee7a l\u1edbp ho\u1eb7c giao di\u1ec7n, h\u00e3y khai b\u00e1o<br \/>\n     * ho\u1eb7c n\u1ebfu qu\u00e1 tr\u00ecnh chuy\u1ec3n \u0111\u1ed5i m\u1edf g\u00f3i kh\u00f4ng th\u00e0nh c\u00f4ng<br \/>\n     * @throws NoSuchFieldException n\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y tr\u01b0\u1eddng c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<br \/>\n     *\/<br \/>\n    public static void setField(\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject, T\u00ean tr\u01b0\u1eddng chu\u1ed7i,<br \/>\n            Gi\u00e1 tr\u1ecb \u0111\u1ed1i t\u01b0\u1ee3ng) n\u00e9m IllegalAccessException, NoSuchFieldException {<br \/>\n        Tr\u01b0\u1eddng tr\u01b0\u1eddng = searchField(invokeObject, fieldName);<br \/>\n        Chu\u1ed7i className = field.getType().getName();<br \/>\n        \u0110\u1ed1i t\u01b0\u1ee3ng convObj = null;<br \/>\n        if (field.getType().isInstance(value)) {<br \/>\n            convObj = gi\u00e1 tr\u1ecb;<br \/>\n        } kh\u00e1c {<br \/>\n            convObj = convObject(value, className);<br \/>\n        }<br \/>\n        field.set(invokeObject, convObj);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * \u0110\u1eb7t gi\u00e1 tr\u1ecb c\u1ee7a t\u00ean tr\u01b0\u1eddng &quot;fieldName&quot; c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng th\u1ef1c thi &quot;invokeObject&quot; th\u00e0nh<br \/>\n     * L\u1ea5y.<br \/>\n     * @paramg\u1ecdiObject \u0110\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param fieldName T\u00ean tr\u01b0\u1eddng c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @return gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1<br \/>\n     * @throws IllegalAccessException N\u1ebfu \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh l\u00e0<br \/>\n     * tr\u01b0\u1eddng (ho\u1eb7c l\u1edbp con ho\u1eb7c ng\u01b0\u1eddi tri\u1ec3n khai c\u1ee7a n\u00f3)<br \/>\n     * N\u1ebfu n\u00f3 kh\u00f4ng ph\u1ea3i l\u00e0 m\u1ed9t th\u1ec3 hi\u1ec7n c\u1ee7a l\u1edbp ho\u1eb7c giao di\u1ec7n, h\u00e3y khai b\u00e1o<br \/>\n     * ho\u1eb7c n\u1ebfu qu\u00e1 tr\u00ecnh chuy\u1ec3n \u0111\u1ed5i m\u1edf g\u00f3i kh\u00f4ng th\u00e0nh c\u00f4ng<br \/>\n     * @throws NoSuchFieldException n\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y tr\u01b0\u1eddng c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<br \/>\n     *\/<br \/>\n    \u0110\u1ed1i t\u01b0\u1ee3ng t\u0129nh c\u00f4ng khai getField(\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject, T\u00ean tr\u01b0\u1eddng chu\u1ed7i)<br \/>\n            n\u00e9m IllegalAccessException, NoSuchFieldException {<br \/>\n        Tr\u01b0\u1eddng tr\u01b0\u1eddng = searchField(invokeObject, fieldName);<br \/>\n        return field.get(invokeObject);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ki\u1ec3m tra xem \u0111\u1ed1i t\u01b0\u1ee3ng &quot;object&quot; c\u00f3 khai b\u00e1o t\u00ean tr\u01b0\u1eddng &quot;fieldName&quot; hay kh\u00f4ng<br \/>\n     * x\u00e1c nh\u1eadn.<br \/>\n     * \u0110\u1ed1i t\u01b0\u1ee3ng @param \u0110\u1ed1i t\u01b0\u1ee3ng c\u1ea7n ki\u1ec3m tra<br \/>\n     * @param fieldName T\u00ean tr\u01b0\u1eddng c\u1ea7n ki\u1ec3m tra<br \/>\n     * @return true n\u1ebfu \u0111\u01b0\u1ee3c khai b\u00e1o<br \/>\n     * @throws Ngo\u1ea1i l\u1ec7<br \/>\n     *\/<br \/>\n    boolean t\u0129nh c\u00f4ng khai hasField(\u0110\u1ed1i t\u01b0\u1ee3ng \u0111\u1ed1i t\u01b0\u1ee3ng, T\u00ean tr\u01b0\u1eddng chu\u1ed7i)<br \/>\n            n\u00e9m ngo\u1ea1i l\u1ec7 {<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(object);<br \/>\n        for (int i = 0; i &lt; props.length; i++) {<br \/>\n            Chu\u1ed7i _fieldName = props[i].getName();<br \/>\n            if (fieldName.equals(_fieldName)) {<br \/>\n                tr\u1ea3 v\u1ec1 s\u1ef1 th\u1eadt;<br \/>\n            }<br \/>\n        }<br \/>\n        tr\u1ea3 v\u1ec1 sai;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     *<br \/>\n     * \u0110\u1ed1i t\u01b0\u1ee3ng @param<br \/>\n     * @tr\u1edf l\u1ea1i<br \/>\n     * @throws Ngo\u1ea1i l\u1ec7<br \/>\n     *\/<br \/>\n    c\u00f4ng khai TreeSet getAllFields(Object object) n\u00e9m Ngo\u1ea1i l\u1ec7 {<\/p>\n<p>        Tr\u01b0\u1eddng TreeSet = TreeSet m\u1edbi();<br \/>\n        \/\/ L\u1ea5y t\u00ean thu\u1ed9c t\u00ednh t\u1eeb ph\u01b0\u01a1ng th\u1ee9c<br \/>\n        PropertyDescriptor[] props = getPropertyDescriptors(object);<br \/>\n        for (int i = 0; i &lt; props.length; i++) {<br \/>\n            Chu\u1ed7i fieldName = props[i].getName();<br \/>\n            fieldSet.add(fieldName);<\/p>\n<p>        }<\/p>\n<p>        \/\/ L\u1ea5y t\u00ean thu\u1ed9c t\u00ednh t\u1eeb tr\u01b0\u1eddng<br \/>\n        Tr\u01b0\u1eddng [] tr\u01b0\u1eddng = object.getClass().getFields();<br \/>\n        for (int i = 0; i &lt; field.length; i++) {<br \/>\n            Chu\u1ed7i fieldName = field[i].getName();<br \/>\n            if (!fieldSet.contains(fieldName)) {<br \/>\n                fieldSet.add(fieldName);<br \/>\n            }<br \/>\n        }<br \/>\n        tr\u01b0\u1eddng tr\u1ea3 v\u1ec1Set;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     *<br \/>\n     * @paramg\u1ecdiObject \u0110\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param fieldName T\u00ean tr\u01b0\u1eddng c\u1ee7a \u0111\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @return C\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c l\u01b0u tr\u1eef ph\u00f9 h\u1ee3p v\u1edbi c\u00e1c \u0111i\u1ec1u ki\u1ec7n \u0111\u1ed1i s\u1ed1 \u0111\u00e3 ch\u1ec9 \u0111\u1ecbnh<br \/>\n     * @throws NoSuchFieldException n\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y tr\u01b0\u1eddng c\u00f3 t\u00ean \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<br \/>\n     *\/<br \/>\n    Tr\u01b0\u1eddng t\u00ecm ki\u1ebfm t\u0129nh ri\u00eang t\u01b0Field(\u0110\u1ed1i t\u01b0\u1ee3ng g\u1ecdiObject, T\u00ean tr\u01b0\u1eddng chu\u1ed7i)<br \/>\n            n\u00e9m NoSuchFieldException {<br \/>\n        th\u1eed {<br \/>\n            tr\u1ea3 v\u1ec1 revevObject.getClass().getField(fieldName);<br \/>\n        } b\u1eaft (NoSuchFieldException e) {<br \/>\n            \/\/ Ph\u1ea1m vi n\u00e0y \u0111\u01b0\u1ee3c l\u1ea5y t\u1eeb t\u00ean c\u1ed9t c\u1ee7a b\u1ea3ng<br \/>\n            fieldName = checkFieldName(fieldName);<br \/>\n            Tr\u01b0\u1eddng [] tr\u01b0\u1eddng =g\u1ecdiObject.getClass().getFields();<br \/>\n            for (int i = 0; i &lt; field.length; i++) {<br \/>\n                if (fields[i].getName().equalsIgnoreCase(fieldName)) {<br \/>\n                    tr\u1ea3 v\u1ec1 c\u00e1c tr\u01b0\u1eddng[i];<br \/>\n                }<br \/>\n            }<br \/>\n            n\u00e9m NoSuchFieldException m\u1edbi (fieldName);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/\/ ----------------------&quot; ng\u01b0\u1eddi kh\u00e1c &quot;<\/p>\n<p>    \/**<br \/>\n     * L\u1ea5y t\u00ean l\u1edbp kh\u00f4ng \u0111\u1ee7 ti\u00eau chu\u1ea9n t\u1eeb m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng.<br \/>\n     * \u0110\u1ed1i t\u01b0\u1ee3ng @param<br \/>\n     * @tr\u1edf l\u1ea1i<br \/>\n     *\/<br \/>\n    Chu\u1ed7i t\u0129nh c\u00f4ng khai getShortClassName(Object object) {<br \/>\n        n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng == null) {<br \/>\n            tr\u1ea3 v\u1ec1 \u201cnull\u201d;<br \/>\n        }<br \/>\n        T\u00ean chu\u1ed7i = object.getClass().getName();<br \/>\n        tr\u1ea3 v\u1ec1 getShortClassName(name);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * L\u1ea5y t\u00ean l\u1edbp t\u1eeb t\u00ean \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n.<br \/>\n     * @param t\u00ean l\u1edbp<br \/>\n     * @tr\u1edf l\u1ea1i<br \/>\n     *\/<br \/>\n    chu\u1ed7i t\u0129nh c\u00f4ng khai getShortClassName(String className) {<br \/>\n        int index = className.lastIndexOf(\u201c.\u201d);<br \/>\n        tr\u1ea3 v\u1ec1 className.substring(index + 1);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Thay \u0111\u1ed5i t\u00ean tr\u01b0\u1eddng t\u1eeb t\u00ean ph\u01b0\u01a1ng th\u1ee9c. Tu\u00e2n th\u1ee7 c\u00e1c quy \u01b0\u1edbc JavaBeans<br \/>\n     * l\u00e0 c\u1ea7n thi\u1ebft.<br \/>\n     * @param t\u00ean ph\u01b0\u01a1ng th\u1ee9c<br \/>\n     * @tr\u1edf l\u1ea1i<br \/>\n     *\/<br \/>\n    chu\u1ed7i t\u0129nh c\u00f4ng khai getFieldName(String MethodName) {<br \/>\n        T\u00ean tr\u01b0\u1eddng chu\u1ed7i = null;<br \/>\n        if (methodName.startsWith(\u201cis\u201d)) {<br \/>\n            fieldName = MethodName.substring(2);<br \/>\n        } kh\u00e1c {<br \/>\n            fieldName = MethodName.substring(3);<br \/>\n        }<br \/>\n        fieldName = convString(fieldName, 0, \u201cL\u201d);<br \/>\n        tr\u1ea3 v\u1ec1 t\u00ean tr\u01b0\u1eddng;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * X\u00e1c minh r\u1eb1ng t\u00ean \u0111\u1ee7 \u0111i\u1ec1u ki\u1ec7n &quot;className&quot; l\u00e0 t\u00ean l\u1edbp hi\u1ec7n c\u00f3.<br \/>\n     * @param t\u00ean l\u1edbp<br \/>\n     * @tr\u1edf l\u1ea1i<br \/>\n     *\/<br \/>\n    boolean t\u0129nh c\u00f4ng khai isClassExist(String className) {<br \/>\n        th\u1eed {<br \/>\n            Class.forName(className);<br \/>\n            tr\u1ea3 v\u1ec1 s\u1ef1 th\u1eadt;<br \/>\n        } b\u1eaft (Ngo\u1ea1i l\u1ec7 e) {<br \/>\n            tr\u1ea3 v\u1ec1 sai;<br \/>\n        }<br \/>\n    }<\/p>\n<p>    B\u1ea3n \u0111\u1ed3 t\u0129nh cu\u1ed1i c\u00f9ng ri\u00eang t\u01b0 BeanInfoCache = new HashMap();<\/p>\n<p>    \/**<br \/>\n     * Tr\u1ea3 v\u1ec1 m\u1ed9t B\u1ed9 m\u00f4 t\u1ea3 thu\u1ed9c t\u00ednh ch\u1ee9a th\u00f4ng tin \u0111\u1ed1i t\u01b0\u1ee3ng cho &quot;\u0111\u1ed1i t\u01b0\u1ee3ng&quot;.<br \/>\n     * \u0110\u1ed1i t\u01b0\u1ee3ng @param<br \/>\n     * @tr\u1edf l\u1ea1i<br \/>\n     * @n\u00e9m IntrospectionException<br \/>\n     *\/<br \/>\n    public static PropertyDescriptor[] getPropertyDescriptors(\u0110\u1ed1i t\u01b0\u1ee3ng \u0111\u1ed1i t\u01b0\u1ee3ng)<br \/>\n            n\u00e9m IntrospectionException {<\/p>\n<p>        BeanInfo BeanInfo = (BeanInfo) BeanInfoCache.get(object.getClass());<br \/>\n        n\u1ebfu (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        tr\u1ea3 v\u1ec1 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\u201cPh\u01b0\u01a1ng ph\u00e1p ri\u00eang b\u00ean d\u01b0\u1edbi\u201d<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     * T\u00ecm ki\u1ebfm ph\u01b0\u01a1ng th\u1ee9c truy c\u1eadp cho t\u00ean tr\u01b0\u1eddng \u0111\u1ed1i s\u1ed1 d\u1ef1a tr\u00ean PropertyDescriptor.<br \/>\n     * @paramg\u1ecdiObject \u0110\u1ed1i t\u01b0\u1ee3ng s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi<br \/>\n     * @param t\u00ean tr\u01b0\u1eddng t\u00ean tr\u01b0\u1eddng<br \/>\n     * @param g\u00f5 Ph\u01b0\u01a1ng th\u1ee9c Getter \u21d2 Ph\u01b0\u01a1ng th\u1ee9c GET Getter \u21d2 SET<br \/>\n     * \u0110\u1ed1i t\u01b0\u1ee3ng Ph\u01b0\u01a1ng th\u1ee9c @return kh\u1edbp v\u1edbi c\u00e1c \u0111i\u1ec1u ki\u1ec7n \u0111\u1ed1i s\u1ed1 \u0111\u00e3 ch\u1ec9 \u0111\u1ecbnh<br \/>\n     * @throws NoSuchMethodException N\u1ebfu kh\u00f4ng t\u00ecm th\u1ea5y ph\u01b0\u01a1ng th\u1ee9c n\u00e0o ph\u00f9 h\u1ee3p,<br \/>\n     * Ho\u1eb7c n\u1ebfu t\u00ean l\u00e0 \u201c &quot; ho\u1eb7c &quot; \u201d<br \/>\n     * trong tr\u01b0\u1eddng h\u1ee3p<br \/>\n     * @n\u00e9m IntrospectionException<br \/>\n     *\/<br \/>\n    Ph\u01b0\u01a1ng th\u1ee9c t\u0129nh ri\u00eang t\u01b0 searchMethod(Objectg\u1ecdiObject, String fieldName,<br \/>\n            Ki\u1ec3u chu\u1ed7i) n\u00e9m NoSuchMethodException, IntrospectionException {<br \/>\n        Ph\u01b0\u01a1ng th\u1ee9c ph\u01b0\u01a1ng th\u1ee9c = 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            T\u00ean chu\u1ed7i = props[i].getName();<br \/>\n            if (!name.equalsIgnoreCase(fieldName)) {<br \/>\n                Ti\u1ebfp t\u1ee5c;<br \/>\n            }<br \/>\n            if (type.equals(GET)) {<br \/>\n                ph\u01b0\u01a1ng th\u1ee9c = \u0111\u1ea1o c\u1ee5[i].getReadMethod();<br \/>\n            } kh\u00e1c {<br \/>\n                ph\u01b0\u01a1ng th\u1ee9c = \u0111\u1ea1o c\u1ee5[i].getWriteMethod();<br \/>\n            }<br \/>\n            if (ph\u01b0\u01a1ng th\u1ee9c == null) {<br \/>\n                Ti\u1ebfp t\u1ee5c;<br \/>\n            }<br \/>\n            ph\u01b0\u01a1ng th\u1ee9c tr\u1ea3 v\u1ec1;<br \/>\n        }<\/p>\n<p>        \/\/ N\u1ebfu ph\u01b0\u01a1ng th\u1ee9c n\u00e0y kh\u00f4ng t\u1ed3n t\u1ea1i.<br \/>\n        n\u00e9m NoSuchMethodException m\u1edbi (&quot;L\u1edbp kh\u00f4ng c\u00f3 ph\u01b0\u01a1ng th\u1ee9c.&quot;<br \/>\n                + \u201c(Kh\u00f4ng ph\u00e2n bi\u1ec7t ch\u1eef hoa ch\u1eef th\u01b0\u1eddng.): \u201d + type.toLowerCase()<br \/>\n                + convString(fieldName, 0, \u201cU\u201d) + \u201c()\u201d);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Ki\u1ec3m tra xem \u0111\u1ed1i s\u1ed1 fieldName c\u00f3 ph\u1ea3i l\u00e0 t\u00ean c\u1ed9t hay kh\u00f4ng; n\u1ebfu \u0111\u00f3 l\u00e0 t\u00ean c\u1ed9t,<br \/>\n     * Chuy\u1ec3n \u0111\u1ed5i tr\u1edf l\u1ea1i.<br \/>\n     *<br \/>\n     * MAIL_ADDRESS \u21d2 \u0110\u1ecaA CH\u1ec8 TH\u01af \u2193 \u0111\u1ecba ch\u1ec9 th\u01b0 = \u0111\u1ecba ch\u1ec9 th\u01b0<br \/>\n     * @param fieldName t\u00ean tr\u01b0\u1eddng ho\u1eb7c t\u00ean c\u1ed9t<br \/>\n     * @return t\u00ean tr\u01b0\u1eddng<br \/>\n     *\/<br \/>\n    ki\u1ec3m tra chu\u1ed7i t\u0129nh ri\u00eang t\u01b0FieldName(String fieldName) {<br \/>\n        int index = fieldName.indexOf(\u201c_\u201d);<br \/>\n        trong khi (\u0111\u00fang) {<br \/>\n            n\u1ebfu (ch\u1ec9 m\u1ee5c == -1) {<br \/>\n                tr\u1ea3 v\u1ec1 t\u00ean tr\u01b0\u1eddng;<br \/>\n            }<br \/>\n            StringBuffer convcloudn = new StringBuffer(fieldName);<br \/>\n            convcloudn.deleteCharAt(index);<br \/>\n            fieldName = convcloudn.toString();<br \/>\n            ch\u1ec9 m\u1ee5c = fieldName.indexOf(\u201c_\u201d);<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Chuy\u1ec3n \u0111\u1ed5i \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ea7n chuy\u1ec3n \u0111\u1ed5i, \u0111\u1ed1i t\u01b0\u1ee3ng, sang ki\u1ec3u convClassName.<br \/>\n     *<br \/>\n     * \u0110\u1ed1i t\u01b0\u1ee3ng @param \u0110\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c chuy\u1ec3n \u0111\u1ed5i<br \/>\n     * @param convClassName chu\u1ed7i l\u1edbp lo\u1ea1i c\u1ea7n chuy\u1ec3n \u0111\u1ed5i<br \/>\n     * @return \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u00e3 chuy\u1ec3n \u0111\u1ed5i<br \/>\n     *\/<br \/>\n    \u0110\u1ed1i t\u01b0\u1ee3ng t\u0129nh ri\u00eang convObject(\u0110\u1ed1i t\u01b0\u1ee3ng \u0111\u1ed1i t\u01b0\u1ee3ng, Chu\u1ed7i convClassName) {<br \/>\n        n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng == null) {<br \/>\n            \/\/ Tr\u1ea3 v\u1ec1 null khi chuy\u1ec3n \u0111\u1ed5i sang ki\u1ec3u nguy\u00ean th\u1ee7y s\u1ebd g\u00e2y ra l\u1ed7i.<br \/>\n            \/\/ Bi\u1ebfn n\u00f3 th\u00e0nh m\u1ed9t tr\u00ecnh bao b\u1ecdc cho 0.<br \/>\n            if (convClassName.equals(\u201cint\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 S\u1ed1 nguy\u00ean m\u1edbi (0);<br \/>\n            } else if (convClassName.equals(\u201cd\u00e0i\u201d)) {<br \/>\n                tr\u1ea3 l\u1ea1i Long m\u1edbi (0);<br \/>\n            } kh\u00e1c {<br \/>\n                tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb r\u1ed7ng;<br \/>\n            }<br \/>\n        }<br \/>\n        if (object.getClass().getName().equals(convClassName)) {<br \/>\n            tr\u1ea3 l\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng;<br \/>\n        }<\/p>\n<p>        \/\/ \u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014-\u300ephi\u00ean b\u1ea3n \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee7a chu\u1ed7i\u300f<br \/>\n        if (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof String) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                tr\u1ea3 l\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng;<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201cd\u00e0i\u201d)) {<br \/>\n                Chu\u1ed7i str = (Chu\u1ed7i) \u0111\u1ed1i t\u01b0\u1ee3ng;<br \/>\n                n\u1ebfu (isExist(str)) {<br \/>\n                    \/\/ S\u1ebd th\u1eadt t\u1ec7 n\u1ebfu b\u1ea1n kh\u00f4ng chuy\u1ec3n \u0111\u1ed5i n\u00f3 th\u00e0nh BigDecimal m\u1ed9t l\u1ea7n<br \/>\n                    \/\/ 1000.00000<br \/>\n                    BigDecimal big = new BigDecimal(str);<br \/>\n                    tr\u1ea3 v\u1ec1 Long m\u1edbi (big.longValue());<br \/>\n                } kh\u00e1c {<br \/>\n                    \/\/ N\u1ebfu str l\u00e0 m\u1ed9t k\u00fd t\u1ef1 shell, \u0111\u1eb7t gi\u00e1 tr\u1ecb ban \u0111\u1ea7u th\u00e0nh \u201c0\u201d<br \/>\n                    tr\u1ea3 l\u1ea1i Long m\u1edbi (0);<br \/>\n                }<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Date\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng toSqlDate((String));<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                Ng\u00e0y ng\u00e0y = \u0111\u1ed1i t\u01b0\u1ee3ng toSqlDate((String));<br \/>\n                tr\u1ea3 v\u1ec1 D\u1ea5u th\u1eddi gian m\u1edbi (date.getTime());<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                \/\/ N\u1ebfu str l\u00e0 m\u1ed9t k\u00fd t\u1ef1 shell, \u0111\u1eb7t gi\u00e1 tr\u1ecb ban \u0111\u1ea7u th\u00e0nh \u201c0\u201d<br \/>\n                Chu\u1ed7i str = (Chu\u1ed7i) \u0111\u1ed1i t\u01b0\u1ee3ng;<br \/>\n                n\u1ebfu (isExist(str)) {<br \/>\n                    BigDecimal big = new BigDecimal(str);<br \/>\n                    tr\u1ea3 v\u1ec1 S\u1ed1 nguy\u00ean m\u1edbi(big.intValue());<br \/>\n                } kh\u00e1c {<br \/>\n                    tr\u1ea3 v\u1ec1 S\u1ed1 nguy\u00ean m\u1edbi (0);<br \/>\n                }<br \/>\n            } else if (convClassName.equals(\u201cboolean\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 Boolean.valueOf(object.toString());<br \/>\n            } else if (convClassName.equals(\u201cjava.math.BigDecimal\u201d)) {<br \/>\n                Chu\u1ed7i temp = ((String) object).trim();<br \/>\n                \/\/ N\u1ebfu temp.length() == 0, vi\u1ec7c \u0111\u1eb7t n\u00f3 th\u00e0nh null thay v\u00ec 0 l\u00e0 an to\u00e0n.<br \/>\n                if (temp.length() == 0) {<br \/>\n                    tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb r\u1ed7ng;<br \/>\n                } kh\u00e1c {<br \/>\n                    tr\u1ea3 v\u1ec1 BigDecimal m\u1edbi (t\u1ea1m th\u1eddi);<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\u2014\u201c \u0111\u1ed1i t\u01b0\u1ee3ng instanceof java.sql.Date \u201d<br \/>\n        kh\u00e1c n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof java.sql.Date) {<\/p>\n<p>            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                return toStringDate((java.sql.Date) \u0111\u1ed1i t\u01b0\u1ee3ng, \u201cyyyy\/MM\/dd\u201d);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Date\u201d)) {<br \/>\n                tr\u1ea3 l\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng;<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng D\u1ea5u th\u1eddi gian m\u1edbi(((Date)).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\u2014-\u300ephi\u00ean b\u1ea3n \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee7a D\u1ea5u th\u1eddi gian\u300f<br \/>\n        kh\u00e1c n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof D\u1ea5u th\u1eddi gian) {<br \/>\n            th\u1eddi gian d\u00e0i = ((D\u1ea5u th\u1eddi gian) \u0111\u1ed1i t\u01b0\u1ee3ng).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                tr\u1ea3 v\u1ec1 java.sql.Date m\u1edbi (th\u1eddi gian);<br \/>\n            } else if (convClassName.equals(\u201cjava.sql.Timestamp\u201d)) {<br \/>\n                tr\u1ea3 l\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng;<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-\u300eth\u1ec3 hi\u1ec7n \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee7a s\u1ed1 nguy\u00ean\u300f<br \/>\n        kh\u00e1c n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof S\u1ed1 nguy\u00ean) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                tr\u1ea3 l\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng;<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 object.toString();<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201cd\u00e0i\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng Long(((Integer) object).longValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.math.BigDecimal\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng BigDecimal(((Integer) m\u1edbi).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\u2014\u300ephi\u00ean b\u1ea3n \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee7a Long\u300f<br \/>\n        kh\u00e1c n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof Long) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201cd\u00e0i\u201d)) {<br \/>\n                tr\u1ea3 l\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng;<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 object.toString();<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng Integer(((Long) object).intValue()); m\u1edbi<br \/>\n            } else if (convClassName.equals(\u201cjava.math.BigDecimal\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng BigDecimal(((Long) m\u1edbi).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-\u300ephi\u00ean b\u1ea3n \u0111\u1ed1i t\u01b0\u1ee3ng c\u1ee7a Double\u300f<br \/>\n        kh\u00e1c n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof Double) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                \/\/ S\u1ed0 C\u1ed8T(8,0)<br \/>\n                \/\/ windows oracle &gt; BigDecimal<br \/>\n                \/\/ Oracle UNIX &gt; G\u1ea5p \u0111\u00f4i<br \/>\n                BigDecimal big = new BigDecimal((Double) object).doubleValue());<br \/>\n                int quy m\u00f4 = big.scale();<br \/>\n                n\u1ebfu (t\u1ef7 l\u1ec7 == 0) {<br \/>\n                    tr\u1ea3 v\u1ec1 big.toString();<br \/>\n                } kh\u00e1c {<br \/>\n                    \/\/ Kh\u00f4ng \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3 n\u1ebfu c\u1ea7n l\u00e0m tr\u00f2n.<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                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng Integer((Double) m\u1edbi).intValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201cd\u00e0i\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng Long((Double) m\u1edbi).longValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.math.BigDecimal\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng BigDecimal((Double) m\u1edbi). 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\u2014\u201c \u0111\u1ed1i t\u01b0\u1ee3ng th\u1ec3 hi\u1ec7n c\u1ee7a BigDecimal \u201d<br \/>\n        kh\u00e1c n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof BigDecimal) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 object.toString();<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Long\u201d)<br \/>\n                    || convClassName.equals(\u201cd\u00e0i\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng Long((BigDecimal) m\u1edbi).longValue());<br \/>\n            } else if (convClassName.equals(\u201cjava.lang.Integer\u201d)<br \/>\n                    || convClassName.equals(\u201cint\u201d)) {<br \/>\n                tr\u1ea3 v\u1ec1 \u0111\u1ed1i t\u01b0\u1ee3ng Integer((BigDecimal) m\u1edbi).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\u0111\u1ed1i t\u01b0\u1ee3ng instanceof byte[]\u300f<br \/>\n        kh\u00e1c n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof byte[]) {<br \/>\n            if (convClassName.equals(\u201cjava.sql.Blob\u201d)) {<br \/>\n                tr\u1ea3 l\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng;<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\u2014\u201c \u0111\u1ed1i t\u01b0\u1ee3ng l\u00e0 Boolean\u201d<br \/>\n        kh\u00e1c n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof Boolean) {<br \/>\n            if (convClassName.equals(\u201cboolean\u201d)) {<br \/>\n                tr\u1ea3 l\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng;<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\u0111\u1ed1i t\u01b0\u1ee3ng l\u00e0 boolean[]\u300f<br \/>\n        kh\u00e1c n\u1ebfu (\u0111\u1ed1i t\u01b0\u1ee3ng instanceof boolean[]) {<br \/>\n            if (convClassName.equals(\u201cjava.lang.String\u201d)) {<br \/>\n                \u0111\u1ed1i t\u01b0\u1ee3ng boolean[] bs = (boolean[]);<br \/>\n                H\u1ed7 tr\u1ee3 StringBuffer = StringBuffer m\u1edbi(\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                tr\u1ea3 v\u1ec1 buff.toString();<br \/>\n            }<br \/>\n            ThrowNoSupprt(object, convClassName);<br \/>\n        }<br \/>\n        ThrowNoSupprt(object, convClassName);<br \/>\n        tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb r\u1ed7ng;<\/p>\n<p>    }<\/p>\n<p>    \/**<br \/>\n     *N\u00e9m n\u1ebfu chuy\u1ec3n \u0111\u1ed5i kh\u00f4ng \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3.<br \/>\n     *<br \/>\n     * \u0110\u1ed1i t\u01b0\u1ee3ng @param \u0110\u1ed1i t\u01b0\u1ee3ng \u0111\u01b0\u1ee3c chuy\u1ec3n \u0111\u1ed5i<br \/>\n     * @param convClassName Lo\u1ea1i \u0111\u1ec3 chuy\u1ec3n \u0111\u1ed5i<br \/>\n     *\/<br \/>\n    void t\u0129nh ri\u00eang n\u00e9mNoSupprt(\u0110\u1ed1i t\u01b0\u1ee3ng \u0111\u1ed1i t\u01b0\u1ee3ng, Chu\u1ed7i convClassName) {<br \/>\n        Chu\u1ed7i className = (object != null) ? object.getClass().getName()<br \/>\n                : &quot;v\u00f4 gi\u00e1 tr\u1ecb&quot;;<br \/>\n        Chu\u1ed7i errorMess = \u201c\\nVi\u1ec7c x\u1eed l\u00fd chuy\u1ec3n \u0111\u1ed5i ki\u1ec3u cho \u0110\u1ed1i t\u01b0\u1ee3ng n\u00e0y ch\u01b0a \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3.\\n\u201d<br \/>\n                + \u201d [ \u0110\u1ed1i t\u01b0\u1ee3ng ] = \u201d + \u0111\u1ed1i t\u01b0\u1ee3ng + \u201c,[ Lo\u1ea1i \u0111\u1ed1i t\u01b0\u1ee3ng ] = \u201d + className<br \/>\n                + \u201c,[ ConvertClass ] = \u201d + convClassName + \u201c\u201d;<br \/>\n        n\u00e9m UnsupportedOperationException m\u1edbi (errorMess);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Chuy\u1ec3n k\u00fd t\u1ef1 \u1edf v\u1ecb tr\u00ed [index] c\u1ee7a chu\u1ed7i [str] th\u00e0nh ch\u1eef hoa ho\u1eb7c ch\u1eef th\u01b0\u1eddng.<br \/>\n     * &lt;p&gt;<br \/>\n     * @param str Chu\u1ed7i c\u1ea7n \u0111\u00e1nh gi\u00e1<br \/>\n     * Ch\u1ec9 m\u1ee5c @param V\u1ecb tr\u00ed \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<br \/>\n     * @param toCase Chuy\u1ec3n \u0111\u1ed5i sang ch\u1eef hoa \u21d2 U | u Chuy\u1ec3n \u0111\u1ed5i sang ch\u1eef th\u01b0\u1eddng \u21d2 L | l<br \/>\n     * @return String sau khi chuy\u1ec3n \u0111\u1ed5i<br \/>\n     *\/<br \/>\n    chu\u1ed7i t\u0129nh ri\u00eang t\u01b0 convString(String str, int index, String toCase) {<br \/>\n        if (str == null || str.trim().length() == 0) {<br \/>\n            tr\u1ea3 v\u1ec1 str;<br \/>\n        } kh\u00e1c {<br \/>\n            Chu\u1ed7i temp = str.substring(index, index + 1);<br \/>\n            if (toCase.equalsIgnoreCase(\u201cu\u201d)) {<br \/>\n                temp = temp.toUpperCase();<br \/>\n            } kh\u00e1c {<br \/>\n                temp = temp.toLowerCase();<br \/>\n            }<br \/>\n            StringBuffer tempBuffer = StringBuffer m\u1edbi(str);<br \/>\n            tempBuffer.replace(ch\u1ec9 m\u1ee5c, ch\u1ec9 m\u1ee5c + 1, t\u1ea1m th\u1eddi);<br \/>\n            tr\u1ea3 v\u1ec1 tempBuffer.toString();<br \/>\n        }<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * X\u00e1c minh xem [gi\u00e1 tr\u1ecb] c\u00f3 ph\u1ea3i l\u00e0 gi\u00e1 tr\u1ecb h\u1ee3p l\u1ec7 hay kh\u00f4ng.<br \/>\n     *<br \/>\n     * Gi\u00e1 tr\u1ecb @param Chu\u1ed7i c\u1ea7n \u0111\u00e1nh gi\u00e1<br \/>\n     * @return [true]: N\u1ebfu kh\u00f4ng null v\u00e0 kh\u00f4ng \u201c\u201d<br \/>\n     *\/<br \/>\n    boolean t\u0129nh ri\u00eang t\u01b0 isExist(String value) {<br \/>\n        if (value != null &amp;&amp; value.length() != 0) {<br \/>\n            tr\u1ea3 v\u1ec1 s\u1ef1 th\u1eadt;<br \/>\n        }<br \/>\n        tr\u1ea3 v\u1ec1 sai;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * L\u1edbp java.util.Date ho\u1eb7c l\u1edbp con c\u1ee7a n\u00f3 \u1edf \u0111\u1ecbnh d\u1ea1ng \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh<br \/>\n     * Chuy\u1ec3n \u0111\u1ed5i th\u00e0nh chu\u1ed7i.<br \/>\n     * @param date L\u1edbp java.util.Date s\u1ebd \u0111\u01b0\u1ee3c chuy\u1ec3n \u0111\u1ed5i<br \/>\n     * @param \u0111\u1ecbnh d\u1ea1ng \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh m\u1eabu<br \/>\n     * @return chu\u1ed7i ng\u00e0y \u0111\u01b0\u1ee3c \u0111\u1ecbnh d\u1ea1ng<br \/>\n     *\/<br \/>\n    Chu\u1ed7i t\u0129nh ri\u00eang t\u01b0 toStringDate(Ng\u00e0y ng\u00e0y, M\u1eabu chu\u1ed7i) {<br \/>\n        SimpleDateFormat sdFormat = SimpleDateFormat m\u1edbi(m\u1eabu);<br \/>\n        tr\u1ea3 v\u1ec1 sdFormat.format(ng\u00e0y);<br \/>\n    }<\/p>\n<p>    java.sql.Date t\u0129nh ri\u00eang t\u01b0 toSqlDate(String strDate) {<br \/>\n        L\u1ecbch cal = toCalendar(strDate);<br \/>\n        tr\u1edf v\u1ec1SqlDate(cal);<br \/>\n    }<\/p>\n<p>    java.sql.Date t\u0129nh ri\u00eang t\u01b0 toSqlDate(Calendar cal) {<br \/>\n        d\u00e0i l = cal.getTime().getTime();<br \/>\n        tr\u1ea3 v\u1ec1 java.sql.Date(l); m\u1edbi<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Chuy\u1ec3n \u0111\u1ed5i m\u1ed9t gi\u00e1 tr\u1ecb th\u1eddi gian d\u00e0i th\u00e0nh m\u1ed9t chu\u1ed7i theo \u0111\u1ecbnh d\u1ea1ng \u0111\u00e3 ch\u1ec9 \u0111\u1ecbnh.<br \/>\n     * @param time M\u1ed9t gi\u00e1 tr\u1ecb d\u00e0i bi\u1ec3u th\u1ecb mili gi\u00e2y c\u1ee7a th\u1eddi gian hi\u1ec7n t\u1ea1i.<br \/>\n     * @param \u0111\u1ecbnh d\u1ea1ng \u0111\u01b0\u1ee3c ch\u1ec9 \u0111\u1ecbnh m\u1eabu<br \/>\n     * @return chu\u1ed7i ng\u00e0y \u0111\u01b0\u1ee3c \u0111\u1ecbnh d\u1ea1ng<br \/>\n     *\/<br \/>\n    Chu\u1ed7i t\u0129nh ri\u00eang t\u01b0 toStringDate(th\u1eddi gian d\u00e0i, m\u1eabu chu\u1ed7i) {<br \/>\n        return toStringDate(new Date(time), m\u1eabu);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Chu\u1ed7i \u21d2 java.sql.Date<br \/>\n     *<br \/>\n     * Chuy\u1ec3n \u0111\u1ed5i chu\u1ed7i ng\u00e0y th\u00e1ng sau th\u00e0nh java.sql.Date<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     * @tr\u1edf l\u1ea1i<br \/>\n     *\/<br \/>\n    L\u1ecbch t\u0129nh ri\u00eang toCalendar(String strDate) {<br \/>\n        strDate = \u0111\u1ecbnh d\u1ea1ng(strDate);<br \/>\n        L\u1ecbch 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(L\u1ecbch.HOUR_OF_DAY);<br \/>\n        int mm = cal.get(L\u1ecbch.PH\u00daT);<br \/>\n        int ss = cal.get(Calendar.SECOND);<br \/>\n        int SSS = cal.get(L\u1ecbch.MILLISECOND);<\/p>\n<p>        cal.clear();<br \/>\n        cal.set(yyyy, MM \u2013 1, \u0111);<\/p>\n<p>        int len = strDate.length();<br \/>\n        chuy\u1ec3n \u0111\u1ed5i (len) {<br \/>\n        tr\u01b0\u1eddng h\u1ee3p 10:<br \/>\n            ph\u00e1 v\u1ee1;<br \/>\n        tr\u01b0\u1eddng h\u1ee3p 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(L\u1ecbch.PH\u00daT, mm);<br \/>\n            ph\u00e1 v\u1ee1;<br \/>\n        tr\u01b0\u1eddng h\u1ee3p 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(L\u1ecbch.PH\u00daT, mm);<br \/>\n            cal.set(Calendar.SECOND, ss);<br \/>\n            ph\u00e1 v\u1ee1;<br \/>\n        tr\u01b0\u1eddng h\u1ee3p 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(L\u1ecbch.PH\u00daT, mm);<br \/>\n            cal.set(Calendar.SECOND, ss);<br \/>\n            cal.set(L\u1ecbch.MILLISECOND, SSS);<br \/>\n            ph\u00e1 v\u1ee1;<br \/>\n        m\u1eb7c \u0111\u1ecbnh:<br \/>\n            n\u00e9m IllegalStateException m\u1edbi (<br \/>\n                    \u201cChu\u1ed7i Chu\u1ed7i n\u00e0y kh\u00f4ng th\u1ec3 chuy\u1ec3n \u0111\u1ed5i th\u00e0nh chu\u1ed7i ng\u00e0y th\u00e1ng:\u201d<br \/>\n                    + strDate);<br \/>\n        }<br \/>\n        tr\u1ea3 l\u1ea1i cal;<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * B\u1ea5t k\u1ef3 chu\u1ed7i ng\u00e0y n\u00e0o d\u01b0\u1edbi d\u1ea1ng \u201cyyyy\/MM\/dd\u201d ho\u1eb7c \u201cyyyy\/MM\/dd HH:mm:ss\u201d<br \/>\n     * C\u1ed1 g\u1eafng chuy\u1ec3n \u0111\u1ed5i sang \u0111\u1ecbnh d\u1ea1ng.<br \/>\n     * V\u00ed d\u1ee5: 03\/1\/3 \u21d2 2003\/01\/03<br \/>\n     * @param strDate<br \/>\n     * @tr\u1edf l\u1ea1i<br \/>\n     *\/<br \/>\n    \u0110\u1ecbnh d\u1ea1ng chu\u1ed7i t\u0129nh ri\u00eang t\u01b0 (Chu\u1ed7i strDate) {<br \/>\n        strDate = strDate.trim();<br \/>\n        Chu\u1ed7i yyyy = null;<br \/>\n        Chu\u1ed7i MM = null;<br \/>\n        Chu\u1ed7i dd = null;<br \/>\n        Chu\u1ed7i HH = null;<br \/>\n        Chu\u1ed7i mm = null;<br \/>\n        Chu\u1ed7i ss = null;<br \/>\n        Chu\u1ed7i SSS = null;<\/p>\n<p>        \/\/ N\u1ebfu thi\u1ebfu \u201c-\u201d ho\u1eb7c \u201c\/\u201d<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            } kh\u00e1c {<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        M\u00e3 th\u00f4ng b\u00e1o StringTokenizer = StringTokenizer m\u1edbi(strDate, \u201c_\/-:. \u201c);<br \/>\n        K\u1ebft qu\u1ea3 StringBuffer = StringBuffer m\u1edbi();<br \/>\n        for (int i = 0; token.hasMoreTokens(); i++) {<br \/>\n            Chu\u1ed7i t\u1ea1m th\u1eddi = token.nextToken();<br \/>\n            chuy\u1ec3n \u0111\u1ed5i (i) {<br \/>\n            tr\u01b0\u1eddng h\u1ee3p 0:\/\/ ph\u1ea7n n\u0103m<br \/>\n                yyyy = fillString(strDate, temp, \u201cf\u201d, \u201c20\u201d, 4);<br \/>\n                result.append(yyyy);<br \/>\n                ph\u00e1 v\u1ee1;<br \/>\n            tr\u01b0\u1eddng h\u1ee3p 1:\/\/ ph\u1ea7n th\u00e1ng<br \/>\n                MM = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c\/\u201d + MM);<br \/>\n                ph\u00e1 v\u1ee1;<br \/>\n            tr\u01b0\u1eddng h\u1ee3p 2:\/\/ ph\u1ea7n ng\u00e0y<br \/>\n                dd = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c\/\u201d + dd);<br \/>\n                ph\u00e1 v\u1ee1;<br \/>\n            tr\u01b0\u1eddng h\u1ee3p 3:\/\/ ph\u1ea7n th\u1eddi gian<br \/>\n                HH = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201d \u201d + HH);<br \/>\n                ph\u00e1 v\u1ee1;<br \/>\n            tr\u01b0\u1eddng h\u1ee3p 4:\/\/ ph\u1ea7n ph\u00fat<br \/>\n                mm = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c:\u201d + mm);<br \/>\n                ph\u00e1 v\u1ee1;<br \/>\n            tr\u01b0\u1eddng h\u1ee3p 5:\/\/ ph\u1ea7n th\u1ee9 hai<br \/>\n                ss = fillString(strDate, temp, \u201cf\u201d, \u201c0\u201d, 2);<br \/>\n                result.append(\u201c:\u201d + ss);<br \/>\n                ph\u00e1 v\u1ee1;<br \/>\n            tr\u01b0\u1eddng h\u1ee3p 6:\/\/ ph\u1ea7n mili gi\u00e2y<br \/>\n                SSS = fillString(strDate, temp, \u201cb\u201d, \u201c0\u201d, 3);<br \/>\n                result.append(\u201c.\u201d + SSS);<br \/>\n                ph\u00e1 v\u1ee1;<br \/>\n            }<br \/>\n        }<br \/>\n        tr\u1ea3 v\u1ec1 result.toString();<br \/>\n    }<\/p>\n<p>    Chu\u1ed7i t\u0129nh ri\u00eang fillString(Chu\u1ed7i strDate, Chu\u1ed7i str,<br \/>\n            V\u1ecb tr\u00ed chu\u1ed7i, Chu\u1ed7i addStr, int len) {<\/p>\n<p>        if (str.length() &gt; len) {<br \/>\n            String mes = strDate + \u201cChu\u1ed7i String n\u00e0y kh\u00f4ng th\u1ec3 chuy\u1ec3n \u0111\u1ed5i th\u00e0nh chu\u1ed7i ng\u00e0y th\u00e1ng\u201d;<br \/>\n            n\u00e9m IllegalStateException m\u1edbi (mes);<br \/>\n        }<br \/>\n        tr\u1ea3 v\u1ec1 fillString(str, location, addStr, len);<br \/>\n    }<\/p>\n<p>    \/**<br \/>\n     * Th\u00eam chu\u1ed7i [addStr] c\u1ea7n th\u00eam v\u00e0o chu\u1ed7i [str] t\u1ea1i [position] trong [len]<br \/>\n     * Ch\u00e8n cho \u0111\u1ebfn khi \u0111\u1ea7y \u0111\u1ee7.<br \/>\n     * &lt;p&gt;<br \/>\n     * V\u00ed d\u1ee5: Chu\u1ed7i ss = StringUtil.fillString(\u201caaa\u201d,\u201db\u201d,\u201d0\u2033,7); ss \u21d2 \u201caaa0000\u201d<br \/>\n     *<br \/>\n     * *fillString() ch\u00e8n cho \u0111\u1ebfn khi len \u0111\u01b0\u1ee3c l\u1ea5p \u0111\u1ea7y, nh\u01b0ng addString() ch\u00e8n len.<br \/>\n     *<br \/>\n     * @param str chu\u1ed7i m\u1ee5c ti\u00eau<br \/>\n     * @param location Ch\u00e8n tr\u01b0\u1edbc \u21d2 F\/f Ch\u00e8n sau \u21d2 B\/b<br \/>\n     * @param addStr Chu\u1ed7i \u0111\u1ec3 ch\u00e8n<br \/>\n     * @param len S\u1ed1 ch\u1eef s\u1ed1 c\u1ea7n b\u1ed5 sung<br \/>\n     * @return Chu\u1ed7i sau khi chuy\u1ec3n \u0111\u1ed5i. [str] l\u00e0 null ho\u1eb7c b\u1eb1ng ch\u1eef tr\u1ed1ng, [addStr] \u0111\u01b0\u1ee3c \u0111\u1eb7t th\u00e0nh [len]<br \/>\n     * Tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3 \u0111\u00e3 ch\u00e8n cho \u0111\u1ebfn khi h\u00e0i l\u00f2ng.<br \/>\n     *\/<br \/>\n    chu\u1ed7i t\u0129nh ri\u00eang fillString(Chu\u1ed7i str, V\u1ecb tr\u00ed chu\u1ed7i,<br \/>\n            Chu\u1ed7i addStr, int len) {<br \/>\n        StringBuffer tempBuffer = null;<br \/>\n        if (!isExist(str)) {<br \/>\n            tempBuffer = StringBuffer m\u1edbi();<br \/>\n            for (int i = 0; i &lt; len; i++) {<br \/>\n                tempBuffer.append(addStr);<br \/>\n            }<br \/>\n            tr\u1ea3 v\u1ec1 tempBuffer.toString();<br \/>\n        } else if (str.length() != len) {<br \/>\n            tempBuffer = StringBuffer m\u1edbi(str);<br \/>\n            while (len &gt; tempBuffer.length()) {<br \/>\n                if (position.equalsIgnoreCase(\u201cf\u201d)) {<br \/>\n                    tempBuffer.insert(0, addStr);<br \/>\n                } kh\u00e1c {<br \/>\n                    tempBuffer.append(addStr);<br \/>\n                }<br \/>\n            }<br \/>\n            tr\u1ea3 v\u1ec1 tempBuffer.toString();<br \/>\n        }<br \/>\n        tr\u1ea3 v\u1ec1 str;<br \/>\n    }<\/p>\n<p>}<br \/>\n<\/textarea><\/p>","protected":false},"excerpt":{"rendered":"<p>Ph\u1ea3n chi\u1ebfu Java \u0111\u01b0\u1ee3c th\u1ef1c hi\u1ec7n d\u1ec5 d\u00e0ng Gi\u1edbi thi\u1ec7u m\u1ed9t l\u1edbp ti\u1ec7n \u00edch cho ph\u00e9p b\u1ea1n d\u1ec5 d\u00e0ng s\u1eed d\u1ee5ng API ph\u1ea3n chi\u1ebfu Java [\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\/vi\/wp-json\/wp\/v2\/posts\/917"}],"collection":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/comments?post=917"}],"version-history":[{"count":6,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/917\/revisions"}],"predecessor-version":[{"id":1896,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/posts\/917\/revisions\/1896"}],"wp:attachment":[{"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/media?parent=917"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/categories?post=917"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chat-messenger.com\/vi\/wp-json\/wp\/v2\/tags?post=917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}