黑马程序员技术交流社区
标题: 反射帮忙加加注释? [打印本页]
作者: jagon 时间: 2014-3-20 23:32
标题: 反射帮忙加加注释?
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)) ;
}
}
谁能帮忙加加注释,尽量详细点,看着好费劲,搞不明白!真心感谢啊!
作者: 乔钰博 时间: 2014-3-21 02:24
- import java.lang.reflect.Method;
- public class TestDemo {
- public static void main(String[] args) throws Exception {
- Class<?> cls = Class.forName("cn.mldn.demo.Person") ; //获取Class对象,三种方式最常用的一种
- Object obj = cls.newInstance();//根据获取的对象创建一个该类的Object类型的实例,必须有无参的构造函数才能这样用,否则先获取构造函数再根据构造函数创建对象
- String attribute = "name" ;
- Method setMet = cls.getMethod("set" + initcap(attribute), String.class);//将得到的首字母大写的字符串与set拼成set方法此处拼成了setName,并获取setName方法
- Method getMet = cls.getMethod("get" + initcap(attribute));//同上,拼成了getName,然后获取了getName方法
- setMet.invoke(obj, "张三") ;//根据反射机制调用set方法,method.invoke(调用的对象,传递的参数)
- System.out.println(getMet.invoke(obj));//调用getName方法,由于getName()是没有参数的,所以只需传递对象不用传递参数
- }
- /**
- * 这个方法是把首字母大写
- * @param str
- * 传递进来的字符串
- * @return
- * 返回首字母大写后的字符串
- */
- public static String initcap(String str) {
- return str.substring(0,1).toUpperCase().concat(str.substring(1)) ;
- }
- }
- /**
- * JavaBean
- */
- class Person {
- private String name ;
- public void setName(String name) {
- this.name = name;
- }
- public String getName() {
- return name;
- }
- }
复制代码
LZ看看还有啥不明白的
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |