Java-javabean内省

原创 2012年03月25日 00:11:55

android培训java培训、期待与您交流!

       JavaBean是一种特殊的java类,这种类的属性都必须拥有get和set方法,这样可以通过方法来获得类中的属性值或者进行一些修改。它主要用于数据的传递,该类的方法主要访问私有的字段。例如在两个模块间传递多个信息可以将这些信息封装在一个JAVABEAN中这种类的对象通常称为值对象(Value Object简称VO)。在这个类中属性是通过是根据方法名推断出来的以为根本就看不到java类内部的成员变量。在推断的时候有这样的规律,去掉set或者get后得到的子串中,如果第二个字符是小写的那么就把第一个变成小写,那么这个子串就是该类中的一个属性:如,setId—>id,id就是一个属性名;setLastlast,last就是一个属性名;setCPU-CPU,CPU就是一个属性名(第二个字母大写则第一个不用在转换为小写了);
      在视频中讲的主要是内省,老师说在直接用类的get方法来获得属性有难度。所以通过API提供的内省方式来获得比较容易。首先直接使用PropertyDescriptor类来获得一个类的某个名字的get和set属性方法。如果在构造该类的时候传了要获得的属性的名字那么这个类就是把该属性的get和set方法。

Class Person{
		private int x;
		public int y;
		public Person(int x){this.x = x;} 
		public int setX(int x){this.x = x;}
		public void getX() return this.x;
}
      用上面的话来理解就是在PropertyDescriptor m = PropertyDescriptor(“x”,Person.class);这个m中封装的就是getX和setX方法。然后再通过PropertyDescriptor类中获得属性的方法和获的写入属性的方法来进行属性值的得到和属性值的修改。
      属性值的获得:

Method m1 = m.getReadMethod();
m1.invoke(new Person(3));
属性值的修改:
Method m2 = m.getWriteMethod();
m2.invoke(new Person(3),1);

在就是老师讲了一个比较复杂的方法通过Introspector的一个静态方法来获得BeanInfo类型的对象,然后再通过该对象的getPorpertyDescriptor()方法来获得这个对象中封装的所有的含有get和set方法的属性。

Person p = new Person(3);
BeanInfo bi = Introspector.getBeanInfo(p.getClass());
		PropertyDescriptor[] pd = bi.getPropertyDescriptors();
		for(PropertyDescriptor pd1 : pd){
			System.out.println(pd1.getName());
			}
       打印的结果是class,x;
       当然这样的话,就简单多了,因为现在已经把知道了属性x对应的get和set方法在pd数组中存着,那么就可通过比较来确定最后的是set还是get方法并进行操作。

android培训java培训、期待与您交流!




Java基础视频教程-JavaBean内省

4-1 初识JavaBean与内省 ·JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。 ·如果要在两个模块之间传...

黑马程序员--java中属性的包装 -内省和javaBean

---------------------- android培训、java培训、期待与您交流! ----------------------            与反射有关的内省 ---》intro...
  • yun90
  • yun90
  • 2011年11月16日 03:45
  • 542

【java反射之】对javabean内省操作

内省(Introspector)是Java语言对Bean类属性、事件的一种缺省处理方法。例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新的值。通过getNam...

JAVA内省JavaBean(Introspector、BeanInfo和PropertyDescriptor)

JavaBean是一个特殊的java类,主要用于传递数据信息 (在我的博客"黑马程序员_android之SQLite项目分析 "中提到绘制表格时将读取数据库的数据写到了 一个Information类中...

黑马程序员--【强哥笔记】系列之Java高新技术笔记之JavaBean内省(第4天)

【强哥笔记】系列之Java高新技术笔记之JavaBean内省(第4天)..... 在“黑马程序员”工作了有半年光景,接触的学员也有接近500个,工作中遇到的问题很多,但是很多问题又很类似。 例...
  • heima_
  • heima_
  • 2014年08月18日 09:35
  • 344

黑马程序员——Java高新技术——内省JavaBean及BeanUtils的应用、注解等

----------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ----------------------Java培训、Android培训、iOS培训、.Net培训、...

黑马程序员—java基础学习--JavaBean的内省操作

类加载器:  类加载器提供有相应的方法将.class文件加载到内存中去。 //加载properties文件 InputStream ips = new FileInputStream("confi...

黑马程序员---------Java面向对象——JavaBean内省

JavaBean 是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。 如果要在两个模块之间传递多个信息,可以将这些信息封装到一个...

《JavaBean》----Java中的内省机制二

上篇文章我们已经讨论过Java中的内省机制了,我们虽然将内省机制封装好了一个方法供给我们调用,但是它还是有一定缺陷的,缺陷1:比如说,上面那个方法只能转换8种基础数据类型,如果表单上有一个日期类型的数...

黑马程序员_java高新javaBean内省

------------------android培训、java培训、期待与您交流! ------------------- 内省 IntroSpecter IntroSpector 视察,检...
  • guyp610
  • guyp610
  • 2012年11月24日 17:10
  • 868
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java-javabean内省
举报原因:
原因补充:

(最多只允许输入30个字)