{"id":1385,"date":"2022-11-01T23:01:07","date_gmt":"2022-11-01T15:01:07","guid":{"rendered":"https:\/\/qaqaq.top\/?p=1385"},"modified":"2022-11-27T12:39:45","modified_gmt":"2022-11-27T04:39:45","slug":"%e5%8f%8d%e5%b0%84-%e8%b0%83%e7%94%a8%e8%bf%90%e8%a1%8c%e6%97%b6%e7%b1%bb%e4%b8%ad%e7%9a%84%e6%8c%87%e5%ae%9a%e5%b1%9e%e6%80%a7","status":"publish","type":"post","link":"https:\/\/qaqaq.top\/?p=1385","title":{"rendered":"\u53cd\u5c04-\u8c03\u7528\u8fd0\u884c\u65f6\u7c7b\u4e2d\u7684\u6307\u5b9a\u5c5e\u6027\u3001\u8c03\u7528\u8fd0\u884c\u65f6\u7c7b\u4e2d\u7684\u6307\u5b9a\u65b9\u6cd5\u3001\u8c03\u7528\u8fd0\u884c\u65f6\u7c7b\u4e2d\u7684\u6307\u5b9a\u6784\u9020\u5668"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>package top.qaqaq.java.P656;\r\n\r\nimport org.junit.jupiter.api.Test;\r\nimport top.qaqaq.java.P649.Person;\r\n\r\nimport java.lang.reflect.Constructor;\r\nimport java.lang.reflect.Field;\r\nimport java.lang.reflect.Method;\r\n\r\n\/**\r\n * \u8c03\u7528\u8fd0\u884c\u65f6\u7c7b\u4e2d\u6307\u5b9a\u7684\u7ed3\u6784\uff1a\u5c5e\u6027\u3001\u65b9\u6cd5\u3001\u6784\u9020\u5668\r\n *\r\n * @author RichieZhang\r\n * @create 2022-11-01 \u4e0b\u5348 10:06\r\n *\/\r\npublic class ReflectionTest {\r\n\r\n    \/*\r\n\r\n    \u4e0d\u9700\u8981\u638c\u63e1\r\n     *\/\r\n    @Test\r\n    public void testField() throws Exception {\r\n        Class clazz = Person.class;\r\n\r\n        \/\/\u521b\u5efa\u8fd0\u884c\u65f6\u7c7b\u7684\u5bf9\u8c61\r\n        Person p = (Person) clazz.newInstance();\r\n\r\n        \/\/\u83b7\u53d6\u6307\u5b9a\u7684\u5c5e\u6027\uff1a\u8981\u6c42\u8fd0\u884c\u65f6\u7c7b\u4e2d\u7684\u5c5e\u6027\u58f0\u660e\u4e3apublic\r\n        \/\/\u901a\u5e38\u4e0d\u91c7\u7528\u6b64\u65b9\u6cd5\r\n        Field id = clazz.getField(\"id\");\r\n\r\n        \/*\r\n        \u8bbe\u7f6e\u5f53\u524d\u5c5e\u6027\u7684\u503c\r\n\r\n        set(): \u53c2\u65701\uff1a\u6307\u660e\u8bbe\u7f6e\u54ea\u4e2a\u5bf9\u8c61\u7684\u5c5e\u6027  \u53c2\u65702\uff1a\u5c06\u6b64\u5c5e\u6027\u503c\u8bbe\u7f6e\u4e3a\u591a\u5c11\r\n         *\/\r\n\r\n        id.set(p,1001);\r\n\r\n        \/*\r\n        \u83b7\u53d6\u5f53\u524d\u5c5e\u6027\u7684\u503c\r\n        get(): \u53c2\u65701\uff1a\u83b7\u53d6\u54ea\u4e2a\u5bf9\u8c61\u7684\u5f53\u524d\u5c5e\u6027\u503c\r\n         *\/\r\n        int pId = (int) id.get(p);\r\n        System.out.println(pId);\r\n\r\n    }\r\n\r\n    \/*\r\n    \u5982\u4f55\u64cd\u4f5c\u8fd0\u884c\u65f6\u7c7b\u4e2d\u7684\u6307\u5b9a\u7684\u5c5e\u6027 -- \u9700\u8981\u638c\u63e1\r\n     *\/\r\n\r\n    @Test\r\n    public void testField1() throws Exception {\r\n        Class clazz = Person.class;\r\n\r\n        \/\/\u521b\u5efa\u8fd0\u884c\u65f6\u7c7b\u7684\u5bf9\u8c61\r\n        Person p = (Person) clazz.newInstance();\r\n\r\n        \/\/1. getDeclaredField(String fieldName): \u83b7\u53d6\u8fd0\u884c\u65f6\u7c7b\u4e2d\u6307\u5b9a\u53d8\u91cf\u540d\u7684\u5c5e\u6027\r\n        Field name = clazz.getDeclaredField(\"name\");\r\n\r\n        \/\/2. \u4fdd\u8bc1\u5f53\u524d\u5c5e\u6027\u662f\u53ef\u8bbf\u95ee\u7684\r\n        name.setAccessible(true);\r\n        \/\/3. \u83b7\u53d6\u3001\u8bbe\u7f6e\u6307\u5b9a\u5bf9\u8c61\u7684\u6b64\u5c5e\u6027\u503c\r\n        name.set(p,\"Tom\");\r\n\r\n        System.out.println(name.get(p));\r\n\r\n    }\r\n\r\n    \/*\r\n    \u5982\u4f55\u64cd\u4f5c\u8fd0\u884c\u65f6\u7c7b\u4e2d\u7684\u6307\u5b9a\u7684\u65b9\u6cd5 -- \u9700\u8981\u638c\u63e1\r\n     *\/\r\n    @Test\r\n    public void testMethod() throws Exception{\r\n\r\n        Class clazz = Person.class;\r\n\r\n        \/\/\u521b\u5efa\u8fd0\u884c\u65f6\u7c7b\u7684\u5bf9\u8c61\r\n        Person p = (Person) clazz.newInstance();\r\n\r\n        \/*\r\n        1. \u83b7\u53d6\u6307\u5b9a\u7684\u67d0\u4e2a\u65b9\u6cd5\r\n        getDeclaredMethod():\u53c2\u65701\uff1a\u6307\u660e\u83b7\u53d6\u7684\u65b9\u6cd5\u7684\u540d\u79f0  \u53c2\u65702\uff1a\u6307\u660e\u83b7\u53d6\u7684\u65b9\u6cd5\u7684\u5f62\u53c2\u5217\u8868\r\n         *\/\r\n        Method show = clazz.getDeclaredMethod(\"show\", String.class);\r\n        \/\/2. \u4fdd\u8bc1\u5f53\u524d\u65b9\u6cd5\u662f\u53ef\u8bbf\u95ee\u7684\r\n        show.setAccessible(true);\r\n\r\n        \/*\r\n        3. \u8c03\u7528\u65b9\u6cd5\u7684invoke(): \u53c2\u65701: \u65b9\u6cd5\u7684\u8c03\u7528\u8005    \u53c2\u65702: \u7ed9\u65b9\u6cd5\u5f62\u53c2\u8d4b\u503c\u7684\u5b9e\u53c2\r\n        invoke()\u7684\u8fd4\u56de\u503c\u5373\u4e3a\u5bf9\u5e94\u7c7b\u4e2d\u8c03\u7528\u7684\u65b9\u6cd5\u7684\u8fd4\u56de\u503c\u3002\r\n         *\/\r\n        Object returnValue = show.invoke(p, \"CHN\");\/\/String nation = p.show(\"CHN\");\r\n        System.out.println(returnValue);\r\n\r\n        System.out.println(\"**********\u5982\u4f55\u8c03\u7528\u9759\u6001\u65b9\u6cd5*********************\");\r\n\r\n        \/\/ private static void showDesc()\r\n\r\n        Method showDesc = clazz.getDeclaredMethod(\"showDesc\");\r\n        showDesc.setAccessible(true);\r\n        \/\/\u5982\u679c\u8c03\u7528\u7684\u8fd0\u884c\u65f6\u7c7b\u4e2d\u7684\u65b9\u6cd5\u6ca1\u6709\u8fd4\u56de\u503c\uff0c\u5219\u6b64invoke()\u8fd4\u56denull\r\n\/\/        Object returnVal = showDesc.invoke(null);\r\n        Object returnVal = showDesc.invoke(Person.class);\r\n        System.out.println(returnVal);\/\/null\r\n\r\n    }\r\n\r\n    \/*\r\n    \u5982\u4f55\u8c03\u7528\u8fd0\u884c\u65f6\u7c7b\u4e2d\u7684\u6307\u5b9a\u7684\u6784\u9020\u5668\r\n     *\/\r\n    @Test\r\n    public void testConstructor() throws Exception{\r\n        Class clazz = Person.class;\r\n\r\n        \/\/private Person(String name){\r\n        \/*\r\n        1. \u83b7\u53d6\u6307\u5b9a\u7684\u6784\u9020\u5668\r\n        getDeclaredConstructor(): \u53c2\u6570: \u6307\u660e\u6784\u9020\u5668\u7684\u53c2\u6570\u5217\u8868\r\n         *\/\r\n\r\n        Constructor constructor = clazz.getDeclaredConstructor(String.class);\r\n\r\n        \/\/2. \u4fdd\u8bc1\u6b64\u6784\u9020\u5668\u662f\u53ef\u8bbf\u95ee\u7684\r\n        constructor.setAccessible(true);\r\n\r\n        \/\/3. \u8c03\u7528\u6b64\u6784\u9020\u5668\u521b\u5efa\u8fd0\u884c\u65f6\u7c7b\u7684\u5bf9\u8c61\r\n        Person per = (Person) constructor.newInstance(\"Tom\");\r\n        System.out.println(per);\r\n\r\n    }\r\n}\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[46],"class_list":["post-1385","post","type-post","status-publish","format-standard","hentry","category-java-code","tag-java"],"_links":{"self":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/1385"}],"collection":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1385"}],"version-history":[{"count":2,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/1385\/revisions"}],"predecessor-version":[{"id":1405,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/1385\/revisions\/1405"}],"wp:attachment":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}