黑马程序员技术交流社区

标题: JavaBean的小问题 [打印本页]

作者: 思维    时间: 2014-8-19 10:28
标题: JavaBean的小问题
本帖最后由 思维 于 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. }
复制代码

作者: ximi    时间: 2014-8-20 20:14
不带有很复杂逻辑方法就算了,开发中,标准不一
作者: 思维    时间: 2014-8-20 21:09
总觉得我的不符合Javabean的基本规则!:)
作者: a6511631    时间: 2014-8-21 10:27
思维 发表于 2014-8-20 21:09
总觉得我的不符合Javabean的基本规则!

有哪里不符合的吗?
作者: 思维    时间: 2014-8-21 10:39
a6511631 发表于 2014-8-21 10:27
有哪里不符合的吗?

JavaBean规则4:要有无参数构造函数
作者: 思维    时间: 2014-8-21 10:41
a6511631 发表于 2014-8-21 10:27
有哪里不符合的吗?

话说你的骑士勋章怎么搞到的?我的这么就了还没审核通过:(
作者: 王凯路路    时间: 2014-8-21 11:06
楼主, 能告诉我, 你看的什么, 看到哪个视频有的javabean的么 ? 我怎么就没看见呢 ?
作者: 思维    时间: 2014-8-21 14:24
王凯路路 发表于 2014-8-21 11:06
楼主, 能告诉我, 你看的什么, 看到哪个视频有的javabean的么 ? 我怎么就没看见呢 ? ...

高新技术
作者: 何艳梅    时间: 2014-8-21 16:33
如果要用反射得到ReflectPoint的对象的话,有空的构造函数要方便得多。但是没有的话还是JavaBean。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2