内省(Introspector)操作JavaBean的属性
2016-03-30 22:16
573 查看
创建包package cn.itccast.introspector,在包下建javabean类Student,代码如下:
在包cn.itccast.introspector下建Demo类,操作Student类的属性
package cn.itccast.introspector; public class Student { private String name; private String password; private String email; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String 4000 password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
在包cn.itccast.introspector下建Demo类,操作Student类的属性
package cn.itccast.introspector; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import org.junit.Test; public class Demo { //通过内省Introspector的 api操作bean的属性 @Test public void test() throws Exception{ //1. 通过属性描述器PropertyDescriptor的构造方法获取属性描述器, //此处获取Student类的name属性描述器 PropertyDescriptor pd=new PropertyDescriptor("name", Student.class); //2. 获取用于写name属性值的方法,相当于setName(String name)方法 Method write=pd.getWriteMethod(); //3.创建Student对象,设置name属性为maomao Student stu=new Student(); write.invoke(stu, "maomao"); //4. 获取用于读name属性的方法,相当于getName()方法 Method reader=pd.getReadMethod(); //5. 读取stu的name属性值,并打印,查看是否设置成功 String name=(String) reader.invoke(stu,null); System.out.println(name); } @Test public void test2() throws IntrospectionException{ //操作Bean的所有属性 //1. 通过Introspector类获得Bean对象的 BeanInfo BeanInfo bif=Introspector.getBeanInfo(Student.class); //2.通过 BeanInfo 来获取属性的描述器 PropertyDescriptor PropertyDescriptor pds[]=bif.getPropertyDescriptors(); //3.通过属性描述器就可以获取某个属性对应的 getter/setter 方法 for(PropertyDescriptor pd: pds){ System.out.println(pd.getName()); } } }
相关文章推荐
- spring--aop
- Spring.Net学习笔记(4)-属性及构造器注入
- java对象的大小
- mybatis 注解和xml的使用
- java大牛list
- java大牛list
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- java 对象this的引用
- Struts2中日期控件
- Java-2016.03.30 Spring AOP
- Java实现循环链表
- 反编译apk文件教程(查看java代码篇)【新浪云搬运】
- Struts2 datetimepicker 日期月份乱码解决
- 根据Unicode编码完美的判断中文汉字和符号
- MyBatis报错:There is no getter for property named 'xxx' in 'class java.lang.String'
- Java中的HashMap和HashSet
- Spring的AOP面向切面的一些小结
- spring security 处理session 超时跳转到登录页面
- Java集合框架
- 针对一个文件夹压缩成zip文件