首页 > 代码库 > java基础巩固系列(八):对javabean的内省操作
java基础巩固系列(八):对javabean的内省操作
一、关于javabean
首先,大家需要明白什么是javabean。在以前我的想法中,只要是.java结尾的文件就是javabean,这种理解是错误的。
必须满足如下条件:
1、属性是私有的
2、提供标准的gettter()和setter()方法
3、必须有无参数的构造函数
二、关于javabean的内省操作
内省定义:通过反射的方式访问javabean中的属性。
用到的jdk中的类:PropertyDescriptor
1、对javabean的简单内省操作:
首先,我们先定义一个简单的javabean:
package com.reflect; public class ReflectPoint { private int x; private int y; public ReflectPoint(int x, int y) { super(); this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }接下来,我们需要编写一个test测试
package com.reflect; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class IntroSpectorTest{ public static void main(String[] args) throws Exception { ReflectPoint pt1 = new ReflectPoint(3,5); String propertyName = "x"; //定义javabean中的属性名 Object retVal = getProperty(pt1, propertyName); System.out.println(retVal); //3 Object value = http://www.mamicode.com/7;>2、对javabean的复杂内省操作:通过类 Introspector 来获取某个对象的 BeanInfo 信息,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后我们就可以通过反射机制来调用这些方法。
还是先创建一个javabean,同上:
package com.reflect; public class ReflectPoint { private int x; private int y; public ReflectPoint(int x, int y) { super(); this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } }然后,编写一个test测试类:package com.reflect; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class IntroSpectorTest{ public static void main(String[] args) throws Exception { ReflectPoint pt1 = new ReflectPoint(3,5); String propertyName = "x"; //定义javabean中的属性名 Object retVal = getProperty(pt1, propertyName); System.out.println(retVal); Object value = http://www.mamicode.com/7;>输出的结果和简单内省的相同、
java基础巩固系列(八):对javabean的内省操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。