首页 > 代码库 > 通过Java的反射动态调用类的set和get方法
通过Java的反射动态调用类的set和get方法
方法一:
1 public static void main(String[] args) throws Exception { 2 Class clazz = Class.forName("TaskProvidePropsList");//这里的类名是全名。。有包的话要加上包名 3 Object obj = clazz.newInstance(); 4 Field[] fields = clazz.getDeclaredFields(); 5 //写数据 6 for(Field f : fields) { 7 PropertyDescriptor pd = new PropertyDescriptor(f.getName(), clazz); 8 Method wM = pd.getWriteMethod();//获得写方法 9 wM.invoke(obj, 2);//因为知道是int类型的属性,所以传个int过去就是了。。实际情况中需要判断下他的参数类型 10 } 11 //读数据 12 for(Field f : fields) { 13 PropertyDescriptor pd = new PropertyDescriptor(f.getName(), clazz); 14 Method rM = pd.getReadMethod();//获得读方法 15 Integer num = (Integer) rM.invoke(obj);//因为知道是int类型的属性,所以转换成integer就是了。。也可以不转换直接打印 16 System.out.println(num); 17 } 18 } 19 }
1 public static void getMethodDemo2() throws Exception { 2 Class clazz = Class.forName("com.itcast.day26.Person"); 3 //Field field = clazz.getDeclaredField("name"); 4 Object obj = clazz.newInstance(); 5 6 PropertyDescriptor pd = new PropertyDescriptor("name", clazz); 7 Method get = pd.getReadMethod(); 8 String name = (String)get.invoke(obj); 9 System.out.println(name); 10 }
方法二:
1 public Object getValue(Object dto,String name) throws Exception{ 2 Method[] m = dto.getClass().getMethods(); 3 for(inti=0;i<m.length;i++){ 4 if(("get"+name).toLowerCase().equals(m[i].getName().toLowerCase())){ 5 return m[i].invoke(dto); 6 } 7 }
通过Java的反射动态调用类的set和get方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。