{"id":1592,"date":"2020-11-19T20:05:24","date_gmt":"2020-11-19T12:05:24","guid":{"rendered":"https:\/\/www.yusian.com\/blog\/?p=1592"},"modified":"2021-01-14T20:30:51","modified_gmt":"2021-01-14T12:30:51","slug":"java%e4%b8%adclass%e7%b1%bb%e7%9a%84%e5%9f%ba%e6%9c%ac%e4%bd%bf%e7%94%a8","status":"publish","type":"post","link":"https:\/\/www.yusian.com\/blog\/java\/2020\/11\/19\/2005241592.html","title":{"rendered":"Java\u4e2dClass\u7c7b\u7684\u57fa\u672c\u4f7f\u7528(\u53cd\u5c04)"},"content":{"rendered":"<h2>1\u3001\u83b7\u53d6\u7c7b\u5bf9\u8c61\u7684\u51e0\u79cd\u65b9\u5f0f<\/h2>\n<p><code>Class.forName(String name)<\/code>\u3001<code>\u7c7b\u540d.class<\/code>\u3001<code>\u5b9e\u4f8b\u5bf9\u8c61.getClass()<\/code><\/p>\n<pre><code class=\"language-java line-numbers\">private static void getClassDemo() throws Exception{\n    Class cls1 = Class.forName(\"java.lang.Object\");\n    System.out.println(cls1);   \/\/ class java.lang.Object\n    Class cls2 = Object.class;\n    System.out.println(cls2);   \/\/ class java.lang.Object\n    Object obj = new Object();\n    Class cls3 = obj.getClass();\n    System.out.println(cls3);   \/\/ class java.lang.Object\n    System.out.println(cls1 == cls2);   \/\/ true\n    System.out.println(cls1 == cls3);   \/\/ true\n}\n<\/code><\/pre>\n<p><!--more--><\/p>\n<h2>2\u3001\u83b7\u53d6\u6210\u5458\u5c5e\u6027\u7684\u56db\u79cd\u65b9\u5f0f<\/h2>\n<p><code>getFields()<\/code>\u3001<code>getField(String filedName)<\/code>\u3001<code>getDeclaredFields()<\/code>\u3001<code>getDeclaredFiled(String name)<\/code><\/p>\n<ul>\n<li>\u4e24\u7ec4\u4e24\u79cd\u7c7b\u578b\uff0c\u524d\u4e24\u4e2a\u83b7\u53d6\u7531<code>public<\/code>\u4fee\u9970\u7684\u6210\u5458\u5c5e\u6027\uff0c\u83b7\u53d6\u6240\u6709\u53ca\u6307\u5b9a\u5355\u4e2a<\/li>\n<li>\u540e\u4e24\u4e2a\u662f\u83b7\u53d6\u5f53\u524d\u6240\u6709\u6210\u5458\u5c5e\u6027\u6216\u6307\u5b9a\u67d0\u4e2a\u6210\u5458\u5c5e\u6027<\/li>\n<\/ul>\n<pre><code class=\"language-java line-numbers\">\/\/ \u83b7\u53d6\u6210\u5458\u5c5e\u6027\u7684\u65b9\u6cd5\nprivate static void getFiledsDemo() {\n    Class&lt;Person&gt; cls = Person.class;\n    \/\/ \u83b7\u53d6public\u4fee\u9970\u7684\u6210\u5458\u5c5e\u6027\n    Field[] fields = cls.getFields();\n    for (Field field : fields) {\n        System.out.println(field);\n    }\n    System.out.println(\"------------\");\n    \/\/ \u83b7\u53d6\u6240\u6709\u6210\u5458\u5c5e\u6027\n    Field[] declaredFields = cls.getDeclaredFields();\n    for (Field declaredField : declaredFields) {\n        System.out.println(declaredField);\n    }\n}\n<\/code><\/pre>\n<h2>3\u3001\u83b7\u53d6\u6784\u9020\u65b9\u6cd5\u7684\u56db\u79cd\u65b9\u5f0f<\/h2>\n<ul>\n<li><code>getConstructors()<\/code>\u3001<code>getConstructor(Class&lt;?&gt;... parameterType)<\/code> \u83b7\u53d6public\u4fee\u9970\u7684\u6784\u9020\u65b9\u6cd5<\/li>\n<li><code>getDeclaredConstructors()<\/code>\u3001<code>getDeclaredConstructor(class&lt;?&gt;... parameterTypes)<\/code>\u83b7\u53d6\u6240\u6709\u6784\u9020\u65b9\u6cd5<\/li>\n<\/ul>\n<pre><code class=\"language-java line-numbers\">\/\/ \u83b7\u53d6\u6784\u9020\u65b9\u6cd5\nprivate static void getConstructorsDemo() {\n    Class&lt;Person&gt; cls = Person.class;\n    \/\/ \u83b7\u53d6\u6240\u6709public\u4fee\u9970\u7684\u6784\u9020\u65b9\u6cd5\n    Constructor[] constructors = cls.getConstructors();\n    for (Constructor constructor : constructors) {\n        System.out.println(constructor);\n    }\n    System.out.println(\"----------------\");\n    \/\/ \u83b7\u53d6\u6240\u6709\u6784\u9020\u65b9\u6cd5\n    Constructor[] declaredConstructors = cls.getDeclaredConstructors();\n    for (Constructor declaredConstructor : declaredConstructors) {\n        System.out.println(declaredConstructor);\n    }\n}\n<\/code><\/pre>\n<h2>4\u3001\u83b7\u53d6\u6210\u5458\u65b9\u6cd5\u7684\u56db\u79cd\u65b9\u5f0f<\/h2>\n<ul>\n<li><code>getMethods()<\/code>\u3001<code>getDeclaredMethod(String name, Class&lt;?&gt;... parameterTypes)<\/code>\u83b7\u53d6public\u4fee\u9970\u7684\u6210\u5458\u65b9\u6cd5\uff1b<\/li>\n<li><code>getDeclaredMethods()<\/code>\u3001<code>getDeclaredMethod(String name, Class&lt;?&gt;... parameterTypes)<\/code> \u83b7\u53d6\u5f53\u524d\u7c7b\u7684\u6240\u6709\u6210\u5458\u65b9\u6cd5\uff1b<\/li>\n<\/ul>\n<pre><code class=\"language-java line-numbers\">\/\/ \u83b7\u53d6\u5b9e\u4f8b\u65b9\u6cd5\nprivate static void getMethodsDemo() throws Exception{\n    Class&lt;Person&gt; cls = Person.class;\n    \/\/ \u83b7\u53d6public\u65b9\u6cd5\uff0c\u5305\u62ec\u7236\u7c7b\u7684\u65b9\u6cd5\n    Method[] methods = cls.getMethods();\n    for (Method method : methods) {\n        System.out.println(method);\n    }\n    System.out.println(\"------------\");\n    \/\/ \u83b7\u53d6\u5f53\u524d\u7c7b\u7684\u6240\u6709\u65b9\u6cd5\n    Method[] declaredMethods = cls.getDeclaredMethods();\n    for (Method declaredMethod : declaredMethods) {\n        System.out.println(declaredMethod);\n    }\n    \/\/ \u83b7\u53d6eat\u65b9\u6cd5\n    Method eat = cls.getDeclaredMethod(\"eat\");\n    System.out.println(eat);    \/\/ void com.yusian.reflex.Person.eat()\n}\n<\/code><\/pre>\n<h2>5\u3001\u6784\u9020\u65b9\u6cd5\u4e0e\u5b9e\u4f8b\u65b9\u6cd5\u7684\u8c03\u7528<\/h2>\n<pre><code class=\"language-java line-numbers\">\/\/ \u6784\u9020\u65b9\u6cd5\u6216\u5b9e\u4f8b\u65b9\u6cd5\u7684\u8c03\u7528\nprivate static void invokeDemo() throws Exception{\n    \/\/ \u83b7\u53d6Person\u7c7b\u5bf9\u8c61\n    Class&lt;Person&gt; cls = Person.class;\n    \/\/ \u83b7\u53d6Person\u5bf9\u8c61\u7684\u5e26\u53c2\u6570\u6784\u9020\u51fd\u6570\n    Constructor&lt;Person&gt; constructor = cls.getConstructor(String.class, int.class);\n    \/\/ \u5229\u7528\u6784\u9020\u51fd\u6570\u7684newInstance\u65b9\u6cd5\u751f\u6210\u5b9e\u4f8b\u5bf9\u8c61\n    Person sian = constructor.newInstance(\"Sian\", 21);\n    System.out.println(sian);\n    \/\/ \u83b7\u53d6\u7c7b\u5bf9\u8c61\u65b9\u6cd5\uff0c\u8c03\u7528\u5b9e\u4f8b\u7684\u65b9\u6cd5\n    Method eat = cls.getDeclaredMethod(\"eat\");\n    eat.invoke(sian);\n\n    Method method = cls.getDeclaredMethod(\"methodD\");\n    \/\/ \u5982\u679c\u662f\u79c1\u6709\u65b9\u6cd5\uff0c\u5219\u9700\u8981\u6388\u6743\u8bbf\u95ee\n    method.setAccessible(true);\n    method.invoke(sian);\n}\n<\/code><\/pre>\n<blockquote><p>\n  \u4ec0\u4e48\u53eb\u53cd\u5c04\uff1a\u5c06\u7c7b\u7684\u5404\u4e2a\u7ec4\u6210\u90e8\u5206\u5c01\u88c5\u4e3a\u5176\u4ed6\u5bf9\u8c61\uff0c\u8fd9\u5c31\u662f\u53cd\u5c04\uff01\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>1\u3001\u83b7\u53d6\u7c7b\u5bf9\u8c61\u7684\u51e0\u79cd\u65b9\u5f0f Class.forName(String name)\u3001\u7c7b\u540d.class\u3001\u5b9e\u4f8b\u5bf9\u8c61.getClass() private static void getClassDemo() throws Exception{ Class cls1 = Class.forName(&#8220;java.lang.Object&#8221;); System.out.println(cls1); \/\/ class java.lang.Object Class cls2 = Object.class; System.out.println(cls2); \/\/ class java.lang.Object Object obj = new Object(); Class cls3 = obj.getClass(); System.out.println(cls3); \/\/ class java.lang.Object System.out.println(cls1 == cls2); \/\/ true System.out.println(cls1 == cls3); \/\/ true }<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[279,280],"class_list":["post-1592","post","type-post","status-publish","format-standard","hentry","category-java","tag-class","tag-280"],"_links":{"self":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts\/1592","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/comments?post=1592"}],"version-history":[{"count":0,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/posts\/1592\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/media?parent=1592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/categories?post=1592"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yusian.com\/blog\/wp-json\/wp\/v2\/tags?post=1592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}