通过反射调用setter及getter方法

来源:互联网 发布:js forech 编辑:程序博客网 时间:2024/05/21 10:17

通过反射调用setter及getter方法

package org.lxh.demo15.classinfodemo ;interface China{// 定义China接口public static final String NATIONAL = "China" ;// 定义全局常量public static final String AUTHOR = "李兴华" ;// 定义全局常量public void sayChina() ;// 无参的,没有返回值的方法public String sayHello(String name,int age) ;// 定义有两个参数的方法,并返回内容}public class Person implements China{private String name ;private int age ;public Person(){// 无参构造}public Person(String name){this.name = name ;// 设置name属性}public Person(String name,int age){this(name) ;this.age = age ;}public void sayChina(){// 覆写方法System.out.println("作者:" + AUTHOR + ",国籍:" + NATIONAL) ;}public String sayHello(String name,int age){return name + ",你好!我今年:" + age + "岁了!" ;}public void setName(String name){this.name = name ;}public void setAge(int age){this.age = age ;}public String getName(){return this.name ;}public int getAge(){return this.age ;}};
package org.lxh.demo15.classinfodemo ;import java.lang.reflect.Method ;public class InvokeSetGetDemo{public static void main(String args[]){Class<?> c1 = null ;Object obj = null ;try{c1 = Class.forName("org.lxh.demo15.classinfodemo.Person") ;// 实例化Class对象}catch(Exception e){}try{obj = c1.newInstance() ;}catch(Exception e){}setter(obj,"name","李兴华",String.class) ;// 调用setter方法setter(obj,"age",30,int.class) ;// 调用setter方法System.out.print("姓名:") ;getter(obj,"name") ;System.out.print("年龄:") ;getter(obj,"age");}/**Object obj:要操作的对象String att:要操作的属性Object value:要设置的属性内容Class<?> type:要设置的属性类型*/public static void setter(Object obj,String att,Object value,Class<?> type){try{Method met = obj.getClass().getMethod("set"+initStr(att),type) ;// 得到setter方法met.invoke(obj,value) ;// 设置setter的内容}catch(Exception e){e.printStackTrace() ;}}public static void getter(Object obj,String att){try{Method met = obj.getClass().getMethod("get"+initStr(att)) ;// 得到setter方法
运行结果:
姓名:李兴华年龄:30




0 0
原创粉丝点击