黑马程序员--javase高级基础 内省引出的javabean

</pre><h2><span style="font-size:18px;"></span><pre name="code" class="java">
一.内省

内省的英文单词为IntroSpecter,意思是检查、视察、体检之意,对于程序即对内部进行检查,了解更多的底层细节。

内省的作用重要是针对JavaBean进行操作;

二.JavaBean

1、简述:

        1)JavaBean是一种特殊的Java类,主要用于传递数据信息,这种Java类中的方法主要用于访问私有的字段,且方法符合某种特殊的命名规则。

        2)它是一种特殊的Java类,其中的方法符合特殊的规则。只要一个类中含有get或is和set打头的方法,就可以将其当做JavaBean使用。

        3)字段和属性:

             字段就是我们定义的一些成员变量,如private String name;等

             JavaBean的属性是根据其中的setter和getter方法来确定的,而不是依据其中的变量,如方法名为setId,则中文意思是设置Id,getId也是如此;去掉set或者get前缀,剩余部分就是属性名称。 如果剩余部分的第二个字母小写,则把剩余部分改为小写。如:getAge/setAge-->age;gettime-->time;setTime-->time;getCPU-->CPU。

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

2、组成:

一个JavaBean由三部分组成:

(1) 属性(properties);

(2) 方法(method);

(3) 时间(event);


3、作用:

如果要在两个模板之间传递多个信息,可将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象(Value Object,简称VO),这些信息在类中用私有字段来储存,如果读取或设置这些字段的值,则需要通过一些相应的方法来访问。


4、使用JavaBean的好处:

1)在Java EE开发中,经常要使用到JavaBean。很多环境就要求按JavaBean方式进行操作,别人都这么用和要求这么做,那你就没什么挑选的余地!

2)JDK中提供了对JavaBean进行操作的API,这套API称为内省,若要自己通过getX的方式来访问私有x,可用内省这套API,操作JavaBean要比使用普通的方式更方便。


举例:

package cn.itcast.day1;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.ObjectInputStream.GetField;
import java.lang.reflect.Method;

public class IntroSpector {
	public static void main(String[] args) throws Exception{
		FieldReflex fr = new FieldReflex(3, 5);
		String propertyName = "x";
		
		//普通内省方法获取x
		PropertyDescriptor pd = new PropertyDescriptor(propertyName, fr.getClass());
		//获取getX方法
		Method methodGetX = pd.getReadMethod();
		Object retval = methodGetX.invoke(fr);
		System.out.println(retval);
		
		//复杂内省方法设置x
		BeanInfo beanInfo = Introspector.getBeanInfo(fr.getClass());
		PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
		//在pds集合中迭代获取setX方法并调用
		for(PropertyDescriptor pd1 : pds){
			if(pd1.getName().equals(propertyName)){
				Method methodSetX = pd1.getWriteMethod();
				methodSetX.invoke(fr, 7);
				System.out.println(fr.getX());
				break;
			}
		}
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值