class="markdown_views prism-atom-one-dark">
class="tags" href="/tags/JAVA.html" title=java>java_0">class="tags" href="/tags/JAVA.html" title=java>javaclass="tags" href="/tags/FanShe.html" title=反射>反射示例演示代码
class="tags" href="/tags/FanShe.html" title=反射>反射是什么?
介绍: Java的class="tags" href="/tags/FanShe.html" title=反射>反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。这种动态获取程序信息以及动态调用对象的功能称为Java语言的class="tags" href="/tags/FanShe.html" title=反射>反射机制。class="tags" href="/tags/FanShe.html" title=反射>反射被视为动态语言的关键。
这种机制在很多的如Spring的框架中得到应用,所以还是需要了解一下的。写了一个段代码简单介绍一下这种机制,reflect()方法是通过class="tags" href="/tags/FanShe.html" title=反射>反射拿到一个类的基本信息,如方法名称,参数,构造器等, 然后拼接字符串打印出来。method()是通过class="tags" href="/tags/FanShe.html" title=反射>反射实例化对象,然后给对象赋值。
代码示例
1.用于class="tags" href="/tags/FanShe.html" title=反射>反射的类
class="prism language-class="tags" href="/tags/JAVA.html" title=java>java">class="token keyword">public class="token keyword">class class="token class-name">Customer class="token punctuation">{
class="token keyword">private class="token keyword">int custidclass="token punctuation">;
class="token keyword">private class="token class-name">String custnameclass="token punctuation">;
class="token keyword">private class="token class-name">String contactsclass="token punctuation">;
class="token keyword">private class="token class-name">String telclass="token punctuation">;
class="token keyword">private class="token class-name">String emailclass="token punctuation">;
class="token keyword">private class="token keyword">int empidclass="token punctuation">;
class="token keyword">public class="token class-name">Customerclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"Customer无参构造器"class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token class-name">Customerclass="token punctuation">(class="token keyword">int custidclass="token punctuation">, class="token class-name">String custnameclass="token punctuation">, class="token class-name">String contactsclass="token punctuation">, class="token class-name">String telclass="token punctuation">, class="token class-name">String emailclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.custid class="token operator">= custidclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.custname class="token operator">= custnameclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.contacts class="token operator">= contactsclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.tel class="token operator">= telclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.email class="token operator">= emailclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token class-name">Customerclass="token punctuation">(class="token class-name">String custnameclass="token punctuation">, class="token class-name">String contactsclass="token punctuation">, class="token class-name">String telclass="token punctuation">, class="token class-name">String emailclass="token punctuation">, class="token keyword">int empidclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.custname class="token operator">= custnameclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.contacts class="token operator">= contactsclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.tel class="token operator">= telclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.email class="token operator">= emailclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.empid class="token operator">= empidclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token class-name">Customerclass="token punctuation">(class="token keyword">int custidclass="token punctuation">, class="token class-name">String custnameclass="token punctuation">, class="token class-name">String contactsclass="token punctuation">, class="token class-name">String telclass="token punctuation">, class="token class-name">String emailclass="token punctuation">, class="token keyword">int empidclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.custid class="token operator">= custidclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.custname class="token operator">= custnameclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.contacts class="token operator">= contactsclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.tel class="token operator">= telclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.email class="token operator">= emailclass="token punctuation">;
class="token keyword">thisclass="token punctuation">.empid class="token operator">= empidclass="token punctuation">;
class="token punctuation">}
class="token annotation punctuation">@Override
class="token keyword">public class="token class-name">String class="token function">toStringclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">return class="token string">"Customer{" class="token operator">+
class="token string">"custid=" class="token operator">+ custid class="token operator">+
class="token string">", custname='" class="token operator">+ custname class="token operator">+ class="token string">'\'' class="token operator">+
class="token string">", contacts='" class="token operator">+ contacts class="token operator">+ class="token string">'\'' class="token operator">+
class="token string">", tel='" class="token operator">+ tel class="token operator">+ class="token string">'\'' class="token operator">+
class="token string">", email='" class="token operator">+ email class="token operator">+ class="token string">'\'' class="token operator">+
class="token string">", empid=" class="token operator">+ empid class="token operator">+
class="token string">'}'class="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token keyword">int class="token function">getCustidclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">return custidclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setCustidclass="token punctuation">(class="token keyword">int custidclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.custid class="token operator">= custidclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token class-name">String class="token function">getCustnameclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">return custnameclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setCustnameclass="token punctuation">(class="token class-name">String custnameclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.custname class="token operator">= custnameclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token class-name">String class="token function">getContactsclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">return contactsclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setContactsclass="token punctuation">(class="token class-name">String contactsclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.contacts class="token operator">= contactsclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token class-name">String class="token function">getTelclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">return telclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setTelclass="token punctuation">(class="token class-name">String telclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.tel class="token operator">= telclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token class-name">String class="token function">getEmailclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">return emailclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setEmailclass="token punctuation">(class="token class-name">String emailclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.email class="token operator">= emailclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token keyword">int class="token function">getEmpidclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token keyword">return empidclass="token punctuation">;
class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setEmpidclass="token punctuation">(class="token keyword">int empidclass="token punctuation">) class="token punctuation">{
class="token keyword">thisclass="token punctuation">.empid class="token operator">= empidclass="token punctuation">;
class="token punctuation">}
class="token punctuation">}
2.reflect()方法
class="prism language-class="tags" href="/tags/JAVA.html" title=java>java"> class="token keyword">public class="token keyword">static class="token keyword">void class="token function">reflectclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token class-name">String className class="token operator">= class="token string">"pro.reflect.Customer"class="token punctuation">;
class="token keyword">try class="token punctuation">{
class="token comment">//得到class="tags" href="/tags/FanShe.html" title=反射>反射对象
class="token class-name">Class cls class="token operator">= class="token class-name">Classclass="token punctuation">.class="token function">forNameclass="token punctuation">(classNameclass="token punctuation">)class="token punctuation">;
class="token comment">//根据class="tags" href="/tags/FanShe.html" title=反射>反射对象获得修饰符
class="token class-name">String modify class="token operator">= class="token class-name">Modifierclass="token punctuation">.class="token function">toStringclass="token punctuation">(clsclass="token punctuation">.class="token function">getModifiersclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;
class="token comment">//得到class="tags" href="/tags/FanShe.html" title=反射>反射类名称
class="token class-name">String name class="token operator">= clsclass="token punctuation">.class="token function">getNameclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(modify class="token operator">+ class="token string">" class " class="token operator">+ name class="token operator">+ class="token string">"{"class="token punctuation">)class="token punctuation">;
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"****************得到类属性*****************"class="token punctuation">)class="token punctuation">;
class="token comment">//得到类的所有的属性字段custid,custname,contacts...
class="token class-name">Fieldclass="token punctuation">[class="token punctuation">] declaredFields class="token operator">= clsclass="token punctuation">.class="token function">getDeclaredFieldsclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//循环遍历输出
class="token keyword">for class="token punctuation">(class="token class-name">Field field class="token operator">: declaredFieldsclass="token punctuation">) class="token punctuation">{
class="token comment">//根据字段属性获得修饰符private,public...
modify class="token operator">= class="token class-name">Modifierclass="token punctuation">.class="token function">toStringclass="token punctuation">(fieldclass="token punctuation">.class="token function">getModifiersclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;
class="token comment">//得到字段类型名称string,int...
class="token class-name">String type class="token operator">= fieldclass="token punctuation">.class="token function">getTypeclass="token punctuation">(class="token punctuation">)class="token punctuation">.class="token function">getNameclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//得到属性字段名称custid,custname,contacts
name class="token operator">= fieldclass="token punctuation">.class="token function">getNameclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(modify class="token operator">+ class="token string">" " class="token operator">+ type class="token operator">+ class="token string">" " class="token operator">+ name class="token operator">+ class="token string">";"class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"****************得到所有的构造器*****************"class="token punctuation">)class="token punctuation">;
class="token comment">//得到所有的构造器
class="token class-name">Constructorclass="token punctuation">[class="token punctuation">] declaredConstructors class="token operator">= clsclass="token punctuation">.class="token function">getDeclaredConstructorsclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//循环输出
class="token keyword">for class="token punctuation">(class="token class-name">Constructor constructor class="token operator">: declaredConstructorsclass="token punctuation">) class="token punctuation">{
class="token comment">//根据构造器获得修饰符private,public...
modify class="token operator">= class="token class-name">Modifierclass="token punctuation">.class="token function">toStringclass="token punctuation">(constructorclass="token punctuation">.class="token function">getModifiersclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;
class="token comment">//得到构造器字段名称Customer
name class="token operator">= constructorclass="token punctuation">.class="token function">getNameclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//根据构造器得到所以参数的类型
class="token class-name">Classclass="token punctuation">[class="token punctuation">] parameterTypes class="token operator">= constructorclass="token punctuation">.class="token function">getParameterTypesclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printclass="token punctuation">(modify class="token operator">+ class="token string">" " class="token operator">+ name class="token operator">+ class="token string">"("class="token punctuation">)class="token punctuation">;
class="token keyword">for class="token punctuation">(class="token class-name">Class parameterType class="token operator">: parameterTypesclass="token punctuation">) class="token punctuation">{
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printclass="token punctuation">(parameterTypeclass="token punctuation">.class="token function">getNameclass="token punctuation">(class="token punctuation">) class="token operator">+ class="token string">","class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"){}"class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"****************得到所有的声明的方法*****************"class="token punctuation">)class="token punctuation">;
class="token comment">//得到所有的声明的方法
class="token class-name">Methodclass="token punctuation">[class="token punctuation">] declaredMethods class="token operator">= clsclass="token punctuation">.class="token function">getDeclaredMethodsclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//循环输出
class="token keyword">for class="token punctuation">(class="token class-name">Method method class="token operator">: declaredMethodsclass="token punctuation">) class="token punctuation">{
class="token comment">//根据构造器获得修饰符private,public...
modify class="token operator">= class="token class-name">Modifierclass="token punctuation">.class="token function">toStringclass="token punctuation">(methodclass="token punctuation">.class="token function">getModifiersclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;
class="token comment">//得到返回类型
class="token class-name">String type class="token operator">= methodclass="token punctuation">.class="token function">getReturnTypeclass="token punctuation">(class="token punctuation">)class="token punctuation">.class="token function">getNameclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//得到方法名称
name class="token operator">= methodclass="token punctuation">.class="token function">getNameclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//得到参数类型
class="token class-name">Classclass="token punctuation">[class="token punctuation">] parameterTypes class="token operator">= methodclass="token punctuation">.class="token function">getParameterTypesclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//格式输出
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printclass="token punctuation">(modify class="token operator">+ class="token string">" " class="token operator">+ type class="token operator">+ class="token string">" " class="token operator">+ name class="token operator">+ class="token string">"("class="token punctuation">)class="token punctuation">;
class="token keyword">for class="token punctuation">(class="token class-name">Class parameterType class="token operator">: parameterTypesclass="token punctuation">) class="token punctuation">{
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printclass="token punctuation">(parameterTypeclass="token punctuation">.class="token function">getNameclass="token punctuation">(class="token punctuation">) class="token operator">+ class="token string">","class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"){}"class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(class="token string">"}"class="token punctuation">)class="token punctuation">;
class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">ClassNotFoundException eclass="token punctuation">) class="token punctuation">{
eclass="token punctuation">.class="token function">printStackTraceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token punctuation">}
输出
class="prism language-class="tags" href="/tags/JAVA.html" title=java>java">class="token keyword">public class="token keyword">class class="token class-name">class="token namespace">proclass="token punctuation">.reflectclass="token punctuation">.Customerclass="token punctuation">{
class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*得到类属性class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*
class="token keyword">private class="token keyword">int custidclass="token punctuation">;
class="token keyword">private class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.String custnameclass="token punctuation">;
class="token keyword">private class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.String contactsclass="token punctuation">;
class="token keyword">private class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.String telclass="token punctuation">;
class="token keyword">private class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.String emailclass="token punctuation">;
class="token keyword">private class="token keyword">int empidclass="token punctuation">;
class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*得到所有的构造器class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*
class="token keyword">public class="token class-name">class="token namespace">proclass="token punctuation">.reflectclass="token punctuation">.Customerclass="token punctuation">(class="token keyword">intclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token keyword">intclass="token punctuation">,class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token class-name">class="token namespace">proclass="token punctuation">.reflectclass="token punctuation">.Customerclass="token punctuation">(class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token keyword">intclass="token punctuation">,class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token class-name">class="token namespace">proclass="token punctuation">.reflectclass="token punctuation">.Customerclass="token punctuation">(class="token keyword">intclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token class-name">class="token namespace">proclass="token punctuation">.reflectclass="token punctuation">.Customerclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*得到所有的声明的方法class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*class="token operator">*
class="token keyword">public class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.String class="token function">toStringclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setCustidclass="token punctuation">(class="token keyword">intclass="token punctuation">,class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.String class="token function">getContactsclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setContactsclass="token punctuation">(class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.String class="token function">getTelclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setCustnameclass="token punctuation">(class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.String class="token function">getCustnameclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.String class="token function">getEmailclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token keyword">int class="token function">getEmpidclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setEmailclass="token punctuation">(class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setEmpidclass="token punctuation">(class="token keyword">intclass="token punctuation">,class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token keyword">int class="token function">getCustidclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token keyword">public class="token keyword">void class="token function">setTelclass="token punctuation">(class="token class-name">class="token namespace">class="tags" href="/tags/JAVA.html" title=java>javaclass="token punctuation">.langclass="token punctuation">.Stringclass="token punctuation">,class="token punctuation">)class="token punctuation">{class="token punctuation">}
class="token punctuation">}
3.method()方法
class="prism language-class="tags" href="/tags/JAVA.html" title=java>java">
class="token keyword">public class="token keyword">static class="token keyword">void class="token function">methodclass="token punctuation">(class="token punctuation">) class="token punctuation">{
class="token class-name">String className class="token operator">= class="token string">"pro.reflect.Customer"class="token punctuation">;
class="token class-name">String fieldName class="token operator">= class="token string">"custname"class="token punctuation">;
class="token class-name">String fieldValue class="token operator">= class="token string">"张三"class="token punctuation">;
class="token class-name">String methodName class="token operator">= class="token string">"setTel"class="token punctuation">;
class="token class-name">String argsTypes class="token operator">= class="token string">"class="tags" href="/tags/JAVA.html" title=java>java.lang.String"class="token punctuation">;
class="token class-name">String argsValues class="token operator">= class="token string">"13833546346"class="token punctuation">;
class="token keyword">try class="token punctuation">{
class="token comment">//得到class="tags" href="/tags/FanShe.html" title=反射>反射对象
class="token class-name">Class cls class="token operator">= class="token class-name">Classclass="token punctuation">.class="token function">forNameclass="token punctuation">(classNameclass="token punctuation">)class="token punctuation">;
class="token comment">//Object obj = cls.newInstance();
class="token comment">//得到构造器
class="token class-name">Constructor declaredConstructor class="token operator">= clsclass="token punctuation">.class="token function">getDeclaredConstructorclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//根据构造器得到对象实例
class="token class-name">Object obj class="token operator">= declaredConstructorclass="token punctuation">.class="token function">newInstanceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token comment">//根据字段名称custname得到字段
class="token class-name">Field field class="token operator">= clsclass="token punctuation">.class="token function">getDeclaredFieldclass="token punctuation">(fieldNameclass="token punctuation">)class="token punctuation">;
class="token comment">//设置字段可见,注意现在的customer是由private修饰的
fieldclass="token punctuation">.class="token function">setAccessibleclass="token punctuation">(class="token boolean">trueclass="token punctuation">)class="token punctuation">;
class="token comment">//字段赋值
fieldclass="token punctuation">.class="token function">setclass="token punctuation">(objclass="token punctuation">, fieldValueclass="token punctuation">)class="token punctuation">;
class="token comment">//得到参数字段类型argsTypes-》class="tags" href="/tags/JAVA.html" title=java>java.lang.String
class="token class-name">Class argsTypeClass class="token operator">= class="token class-name">Classclass="token punctuation">.class="token function">forNameclass="token punctuation">(argsTypesclass="token punctuation">)class="token punctuation">;
class="token comment">//声明的方法
class="token class-name">Method declaredMethod class="token operator">= class="token keyword">nullclass="token punctuation">;
class="token comment">//得到方法通过方法名和参数类型methodName——》setTel,并传入参数argsTypeClass
declaredMethod class="token operator">= clsclass="token punctuation">.class="token function">getDeclaredMethodclass="token punctuation">(methodNameclass="token punctuation">, argsTypeClassclass="token punctuation">)class="token punctuation">;
class="token comment">//为对象实例赋值;argsValues->13833546346
declaredMethodclass="token punctuation">.class="token function">invokeclass="token punctuation">(objclass="token punctuation">, argsValuesclass="token punctuation">)class="token punctuation">;
class="token comment">//打印实例
class="token class-name">Systemclass="token punctuation">.outclass="token punctuation">.class="token function">printlnclass="token punctuation">(objclass="token punctuation">)class="token punctuation">;
class="token punctuation">} class="token keyword">catch class="token punctuation">(class="token class-name">Exception eclass="token punctuation">) class="token punctuation">{
eclass="token punctuation">.class="token function">printStackTraceclass="token punctuation">(class="token punctuation">)class="token punctuation">;
class="token punctuation">}
class="token punctuation">}
输出
class="prism language-class="tags" href="/tags/JAVA.html" title=java>java">class="token class-name">Customer无参构造器
class="token class-name">Customerclass="token punctuation">{custidclass="token operator">=class="token number">0class="token punctuation">, custnameclass="token operator">=class="token string">'张三'class="token punctuation">, contactsclass="token operator">=class="token string">'null'class="token punctuation">, telclass="token operator">=class="token string">'13833546346'class="token punctuation">, emailclass="token operator">=class="token string">'null'class="token punctuation">, empidclass="token operator">=class="token number">0class="token punctuation">}
希望对你有帮助,打工人冲冲冲!