A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 思维 高级黑马   /  2014-8-19 10:28  /  1268 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 思维 于 2014-8-24 17:15 编辑

那天看张老师讲JavaBean那节,有这么几行代码,请问下面的类算JavaBean吗?
  1. import java.lang.reflect.*;
  2. import java.beans.*;
  3. class ReflectPoint{
  4.         private int x;
  5.         private int y;
  6.         public ReflectPoint(int x,int y){
  7.                 this.x=x;
  8.                 this.y=y;
  9.         }
  10.         public int getX(){
  11.                 return x;
  12.         }
  13.         public void setX(int x){
  14.                 this.x = x;
  15.         }
  16.         public int getY(){
  17.                 return y;
  18.         }
  19.         public void setY(int y){
  20.                 this.y = y;
  21.         }
  22. }
  23. class IntroSpectorTest{
  24.         public static void main(String[] args)throws Exception{
  25.                 ReflectPoint pt1=new ReflectPoint(3,5);
  26.                 String propertyName="x";
  27.                 Object retVal=getProperty(pt1,propertyName);
  28.                 System.out.println(retVal);
  29.                 Object value = 7;
  30.                 setProperty(pt1,propertyName,value);
  31.                 System.out.println(pt1.getX());
  32.         }
  33.         private static Object getProperty(Object pt1,
  34.                         String propertyName)throws Exception{
  35.                 /*第一种方式:
  36.                 PropertyDescriptor pd1 =
  37.                         new PropertyDescriptor(propertyName,pt1.getClass());
  38.                 Method        getMethodX = pd1.getReadMethod();
  39.                 Object retVal = getMethodX.invoke(pt1);               
  40.                 return retVal;*/
  41.                 /*第二种方式:*/
  42.                 BeanInfo beanInfo = Introspector.getBeanInfo(pt1.getClass());
  43.                 PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
  44.                 Object retVal = null;
  45.                 for(PropertyDescriptor pd : pds){
  46.                         if(pd.getName().equals(propertyName)){
  47.                                 Method getMethodX = pd.getReadMethod();
  48.                                 retVal = getMethodX.invoke(pt1);
  49.                                 break;
  50.                         }
  51.                 }
  52.                 return retVal;
  53.         }
  54.         private static void setProperty(Object pt1,
  55.                         String propertyName,Object value)throws Exception{
  56.                 PropertyDescriptor pd2 =
  57.                         new PropertyDescriptor(propertyName,pt1.getClass());
  58.                 Method methodSetX = pd2.getWriteMethod();
  59.                 methodSetX.invoke(pt1,value);
  60.         }
  61. }
复制代码

9 个回复

倒序浏览
不带有很复杂逻辑方法就算了,开发中,标准不一

点评

版主快来关注一下这位仁兄  发表于 2014-8-21 10:26
回复 使用道具 举报
总觉得我的不符合Javabean的基本规则!:)
回复 使用道具 举报
思维 发表于 2014-8-20 21:09
总觉得我的不符合Javabean的基本规则!

有哪里不符合的吗?
回复 使用道具 举报
a6511631 发表于 2014-8-21 10:27
有哪里不符合的吗?

JavaBean规则4:要有无参数构造函数
回复 使用道具 举报
a6511631 发表于 2014-8-21 10:27
有哪里不符合的吗?

话说你的骑士勋章怎么搞到的?我的这么就了还没审核通过:(
回复 使用道具 举报
楼主, 能告诉我, 你看的什么, 看到哪个视频有的javabean的么 ? 我怎么就没看见呢 ?
回复 使用道具 举报
思维 高级黑马 2014-8-21 14:24:48
8#
王凯路路 发表于 2014-8-21 11:06
楼主, 能告诉我, 你看的什么, 看到哪个视频有的javabean的么 ? 我怎么就没看见呢 ? ...

高新技术
回复 使用道具 举报
如果要用反射得到ReflectPoint的对象的话,有空的构造函数要方便得多。但是没有的话还是JavaBean。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马