关于BeanInfo的一个问题

import java.beans.BeanInfo;

import java.beans.IntrospectionException;

import java.beans.Introspector;

import java.beans.PropertyDescriptor;

       public class BeanInfoTest {

                 public int getA(){

                          return 1;

                }

                 public static void main(String[] args) {

                         try {

                                     BeanInfo bi =Introspector.getBeanInfo(BeanInfoTest.class, Object.class);

                                     PropertyDescriptor pd[] = bi.getPropertyDescriptors();

                                    for(PropertyDescriptor prodes:pd){

                                              System.out.println(prodes.getName());

                                              System.out.println(prodes.getReadMethod());

                                              System.out.println(prodes.getWriteMethod());

                                     }

                             } catch (IntrospectionException e) {

                                       e.printStackTrace();

                               }

        }

}

 附件是结果,它竟然帮我找到了property a。

我比较好奇的问题是,我明明没有定义a这个字段的。难道反射的时候都是通过找到getXX setXX方法来判断是不是有这个属性吗?感觉这也太不合适了。还是说这样只是为了让所有权在我们手上,让我们使用规范的bean。提供完整的set get方法和字段?还望知道的人告知一二,


倚天杖
浏览 506回答 4
4回答

ibeautiful

class A{private int a; //这是字段名public void setAbc( a) {this.a = a;}public int getAbc() {return this.a;}}abc就是你的属性名 prodes.getName() 拿的是属性名要区别开字段名 和 属性名

肥皂起泡泡

bean代表一个数据对象,你的测试bean写的就已经不是规范的。还是说这样只是为了让所有权在我们手上,让我们使用规范的bean。提供完整的set get方法和字段?----这里不一定非要有一对get set方法。可以只有get,但不能只有set,既然用到bean又不符合mvf思想那又有什么意义呢?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java