A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 官珺伟 高级黑马   /  2014-3-20 11:35  /  931 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 官珺伟 于 2014-3-21 06:35 编辑

这个方法,想要看到打印结果,该如何做?
  1. import java.lang.reflect.Field;

  2. public class Test1 {

  3.         /**
  4.          * 1、 写一个方法,此方法可将obj对象中名为propertyName的属性的值设置为value.   

  5. public void setProperty(Object obj, String propertyName, Object value){   

  6. }
  7.          */
  8.         
  9.         public void setProperty(Object obj, String propertyName, Object value){   
  10.                         try {
  11.                                 Class c = obj.getClass();
  12.                                 Field f = c.getDeclaredField(propertyName);
  13.                                 f.setAccessible(true);
  14.                                 f.set(obj, value);
  15.                         } catch (Exception e) {
  16.                                 throw new RuntimeException("set property error", e);
  17.                         }
  18.                 }
  19.          
  20.         
  21.         public static void main(String[] args) {
  22.                 // TODO Auto-generated method stub
  23.                
  24.         }

  25. }
复制代码



1 个回复

倒序浏览
  1. package com.itheima;

  2. import java.lang.reflect.Field;

  3. class Person1{
  4.         private String name;
  5.         private int age;
  6.         public String getName() {
  7.                 return name;
  8.         }
  9.         public void setName(String name) {
  10.                 this.name = name;
  11.         }
  12.         public int getAge() {
  13.                 return age;
  14.         }
  15.         public void setAge(int age) {
  16.                 this.age = age;
  17.         }       
  18.         public Person1(String name, int age) {
  19.                 super();
  20.                 this.name = name;
  21.                 this.age = age;
  22.         }
  23.         //重写toString方法
  24.         @Override
  25.         public String toString() {
  26.                 return "Person1 [name=" + name + ", age=" + age + "]";
  27.         }
  28.        
  29. }
  30. public class Test1 {
  31.         public static void main(String args[]){
  32.                 //创建一个对象
  33.                 Person1 p=new Person1("zhangsan",23);
  34.                 System.out.println(p.toString());
  35.                 //调用setProperty方法
  36.                 setProperty(p,"age",18);
  37.                 System.out.println(p.toString());
  38.         }
  39.        
  40.         /*此方法可将obj对象中名为propertyName的属性的值设置为value.
  41.          * */
  42.         public static void setProperty(Object obj, String propertyName, Object value){   
  43.                  //Field[] declaredFields = obj.getClass().getDeclaredFields(propertyName);
  44.                 try {
  45.                         //通过反射获得相应字段
  46.                         Field field=obj.getClass().getDeclaredField(propertyName);
  47.                         //设置暴力反射
  48.                         field.setAccessible(true);
  49.                         //设置字段值
  50.                         field.set(obj, value);
  51.                 } catch (Exception e) {
  52.                         e.printStackTrace();
  53.                 }
  54.         }
  55. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马