-----------
android培训、
java培训、java学习型技术博客、期待与您交流! ------------
内省Introspector
Java提供用于对JavaBean进行操作的类。
JavaBean
JavaBean是一种特殊的Java类,主要用于传输数据信息,这种java类中的方法主要用于访问私有的字段,且方法符合某种命名规则。
如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象(Value Object,简称VO)。这些信息在类中用私有字段来存储,如果读取或设置这些字段值,则需要通过一些相应的方法来访问,大家觉得这些方法名叫什么好呢?JavaBean属性是跟据其中的setter和getter方法来确定的,而不是根据其中的成员变量。如果方法名为SetId,中文意思即为设置Id,至于你把它放到哪个变量上,用管吗?如果方法名为getId,中文意思为获取Id,至于你从哪个变量上取,用管吗、?去掉set前缀就是属性名,如果剩余部分的第二个字母是小写,则把剩余部分首字母改为小写的。
setId()属性名--->id
isLast()属性名-last
例如
class Person
{
private int age;
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
//Age如果第二个字母是小写的,则把第一个字母变成小写的—>age就是属性名
}
对JavaBean的简单内省操作
/**
JavaBean测试类
*/
public class ReflectPoint
{
//成员变量定义
private int x;
public int y;
//构造函数初始化x,y
ReflectPoint(int x,int y)
{
this.x = x;
this.y = y;
}
/**
x,y的setter和getter方法
*/
public int getX()
{
return x;
}
public int getY()
{
return y;
}
public void setX(int x)
{
this.x = x;
}
public void setY(int y)
{
this.y = y;
}
}
import java.lang.reflect.*;
import java.beans.*;
/**
对JavaBean的简单内省操作
*/
public class IntrospectorTest
{
public static void main(String[] args) throws Exception
{
//创建JavaBean类ReflectPoint的对象
ReflectPoint pt1 = new ReflectPoint(3,5);
/*通过JavaBean类实例对象成员x的属性值*/
String propertyName = "x";
Object reVal = getProperty(pt1,propertyName);
System.out.println(reVal);
/*修改JavaBean类的实例对象pt1的x变量的属性值*/
int value = 7;
setProperty(pt1,propertyName,value);
System.out.println(pt1.getX());
}
/*
获取指定对象的属性值
*/
private static Object getProperty(Object pt1,String propertyName) throws Exception
{
PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
Method methodGetX =pd.getReadMethod();
Object reVal = methodGetX.invoke(pt1);
return reVal;
}
/*
设置指定对象的属性值
*/
private static void setProperty(Object pt1,String propertyName,Object Value)throws Exception
{
PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
Method methodSetX = pd.getWriteMethod();
methodSetX.invoke(pt1,7);
}
}
对JavaBean的复杂内省操作
1. 获取JavaBean类的BeanInfo对象
2. 采用遍历BeanInfo所有属性方式来查看和设置某个ReflectPoint对象的x属性。在程序中把一个类当做JavaBean来看,就是调用Introspector.getBeanInfo方法,得到的BeanInfo对象封装了把这个类当做JavaBean看的结果信息。
3. 获取所有属性描述符对象数组,遍历数组,如果属性描述符名称与我们要获取属性名相同获取它的值。
//创建JavaBean类ReflectPoint的对象
ReflectPoint pt1 = new ReflectPoint(3,5);
/*通过JavaBean类实例对象成员x的属性值*/
String propertyName = "x";
BeanInfo beanInfo = Introspector.getBeanInfo(pt1.getClass());//获取BeanInfo对象
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();//获取所有属性描述符对象
Object reVal = null;
/*遍历pds数组,如果属性描述符名称与我们要获取的属性名相同获取它的值*/
for(PropertyDescriptor pd : pds)
{
if(pd.getName().equals(propertyName))
{
Method methodGetX =pd.getReadMethod();
reVal = methodGetX.invoke(pt1);
}
}
System.out.println(reVal);
使用BeanUtils包操作JavaBean
1. 导入BeanUtils包和logging包
2. 通过setProperty(Object obj ,String propertyName)方法设置属性
3. 通过getProperty(Object obj ,String propertyName,Object value)方法获取属性值
注意:
1. PropertyUtils类也可以对property进行set和get操作
2.BeanUtils的set和get对property的操作是以字符串形式对JavaBean属性进行操作。
3..PropertyUtils的set和get方法对property的操作是以属性本身类型对JavaBean进行操作
4. BeanUtils包支持对属性的级联操作,比如Date类的time属性进行设置
例如,属性birthday是Date类型,可以BeanUtils.setProperty(pt1,birthday.time,”111”);
举例:
对ReflectPoint类对象的属性进行获取和设置
BeanUtils.setProperty(pt1,”x”,”9”);
BeaUtils.getProperty(pt1,”x”);
分享到:
相关推荐
根据数据表结构自动生成javabean,需JDK1.7以上版本
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490903
javabean封装数据库
jsp+servlet+javaBean实现MVC.让你熟练掌握JSP,servlet,javaBean
java+jsp+servlet+mysql+javabean
javabean在jsp中的使用,主要是设计一个简单的javabean来实现对数据库的轻松操作
资料++笔记_4_javabean_4321_myeclipse_jsp_源码.zip
一个简单的同学录系统,有增、删、修改、查询、分页功能,非常适合JSP的初学者。
(JSP+JavaBean+Servlet)技术结合的一个项目
使用jsp、 servlet、 javabeans 实现MVC的java程序,其中包含源代码,以及JDBC所需的数据库驱动,数据备份等。
利用Javabean、servlet、jsp实现用户添加、修改、删除
javabean_map_string和json互转详细文档+例子
jsp_servlet_javabean_jdbc 实现简单的网上留言系统,包含用户注册、登录、留言板块。此事例来自Java EE基础实用教程第二版,不是自己原创,完整的敲的书上的代码。
jsp+javabean+tomcat+mysql编写的简单OA 全部源码
登陆注册模块,内含数据库(MySQL),打包2个项目,分别采用jsp_javabean_servlet和ssh2两种技术实现,代码简单,无多余代码,适合初学javaweb的童鞋参考,jdk1.6,如连不上数据库请修改代码中连接MySQL密码。
新闻管理系统利用JSP、JavaBean等技术。
mybatis逆向生成javaBean_generatorSqlmapCustom。代码生成
JSP+Servlet+JavaBean__数据库登录验证
利用JSP_Servlet_JavaBean,适合学习使用。
01_JavaBean讲解(上)001 01_JavaBean讲解(上)001 01_JavaBean讲解(上)001 01_JavaBean讲解(上)001