JavaBean与内省

JavaBean是一个特殊的类,类里面的方法都是get...()和set...()类型的。符合这种特殊命名规则的java类称为javaBean。


可以通过get,set方法推断JavaBean里有的属性。

推断属性时,去掉方法的get,和set,剩下的名称,就是这个JavaBean的属性名。

在应用这个属性名时,

如果第二个字母是小写,要将这个名称第一个字母改成小写。Age——age

如果第二个字母是大写,不用改。CPU——CPU


总之,一个类被当做JavaBean使用时,JavaBean的属性时根据方法名推断出来的,它根本看不到java类中的成员变量


一个符合JavaBean特点的类可以当作普通类一样进行使用,但当作JavaBean用肯定需要带来一些额外好处。

好处:

1.在JavaEE开发中,经常要使用到JavaBean,很多环境就要求按JavaBean方式进行操作。

2.JDK中提供了对JavaBean进行操作的一些API,这套API被称为内省。用这套内省API操作JavaBean,比用普通类更为方便。


	/**
	 * @param args
	 * @throws IntrospectionException 
	 * @throws InvocationTargetException 
	 * @throws IllegalAccessException 
	 * @throws IllegalArgumentException 
	 * @throws InstantiationException 
	 */
	public static void main(String[] args) throws Exception {
		Class clazz=BeanDemo.class;
		Object obj=clazz.newInstance();
		String propertyName="name";
		String value="xiaoqiang";
		setProperty(obj,propertyName,value);
		getProperty(obj,propertyName);
	}
	/**
	 * 通过内省的方法设置属性值 
	 * @param obj 属性所属的对象
	 * @param propertyName 属性名称
	 * @param value 需要设置的属性值
	 * @throws Exception
	 */
	private static void setProperty(Object obj, String propertyName,
			String value) throws Exception {
		PropertyDescriptor pd=new PropertyDescriptor(propertyName, obj.getClass());
		Method method=pd.getWriteMethod();
		method.invoke(obj, value);
	}
	/**
	 * 通过内省的方式获得属性值
	 * @param obj 属性所属的对象
	 * @param propertyName  属性名称
	 * @throws Exception
	 */
	public static void getProperty(Object obj, String propertyName) throws Exception  {
		PropertyDescriptor pd=new PropertyDescriptor(propertyName, obj.getClass());
		Method method=pd.getReadMethod();
		Object retVal=method.invoke(obj);
		System.out.println(retVal);
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值