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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jagon 中级黑马   /  2014-3-20 23:32  /  1084 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.lang.reflect.Method;
class Person {
    private String name ;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}
public class TestDemo {
    public static void main(String[] args) throws Exception {
        Class<?> cls = Class.forName("cn.mldn.demo.Person") ;   
        Object obj = cls.newInstance();
        String attribute = "name" ;
        Method setMet = cls.getMethod("set" + initcap(attribute), String.class);
        Method getMet = cls.getMethod("get" + initcap(attribute));
        setMet.invoke(obj, "张三") ;
        System.out.println(getMet.invoke(obj));
    }
    public static String initcap(String str) {
        return str.substring(0,1).toUpperCase().concat(str.substring(1)) ;
    }
}

谁能帮忙加加注释,尽量详细点,看着好费劲,搞不明白!真心感谢啊!

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

1 个回复

倒序浏览
  1. import java.lang.reflect.Method;

  2. public class TestDemo {
  3.     public static void main(String[] args) throws Exception {
  4.         Class<?> cls = Class.forName("cn.mldn.demo.Person") ;  //获取Class对象,三种方式最常用的一种
  5.         Object obj = cls.newInstance();//根据获取的对象创建一个该类的Object类型的实例,必须有无参的构造函数才能这样用,否则先获取构造函数再根据构造函数创建对象
  6.         String attribute = "name" ;
  7.         Method setMet = cls.getMethod("set" + initcap(attribute), String.class);//将得到的首字母大写的字符串与set拼成set方法此处拼成了setName,并获取setName方法
  8.         Method getMet = cls.getMethod("get" + initcap(attribute));//同上,拼成了getName,然后获取了getName方法
  9.         setMet.invoke(obj, "张三") ;//根据反射机制调用set方法,method.invoke(调用的对象,传递的参数)
  10.         System.out.println(getMet.invoke(obj));//调用getName方法,由于getName()是没有参数的,所以只需传递对象不用传递参数
  11.     }
  12.     /**
  13.      * 这个方法是把首字母大写
  14.      * @param str
  15.      *                   传递进来的字符串
  16.      * @return
  17.      *                   返回首字母大写后的字符串
  18.      */
  19.     public static String initcap(String str) {
  20.         return str.substring(0,1).toUpperCase().concat(str.substring(1)) ;
  21.     }
  22. }

  23. /**
  24. * JavaBean
  25. */
  26. class Person {
  27.     private String name ;
  28.     public void setName(String name) {
  29.         this.name = name;
  30.     }
  31.     public String getName() {
  32.         return name;
  33.     }
  34. }
复制代码

LZ看看还有啥不明白的

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马