黑马程序员技术交流社区

标题: 【急】求教如何设置javabean中某几个属性的默认值 [打印本页]

作者: 不喝茶的陆羽    时间: 2013-6-8 17:29
标题: 【急】求教如何设置javabean中某几个属性的默认值
本帖最后由 不喝茶的陆羽 于 2013-6-8 20:07 编辑

不在这个javabean中完成。
比如:存在一个JavaBean,它包含以下几种可能的属性: 1:boolean/Boolean 2:int/Integer
          3:String 4:double/Double 属性名未知,现在要给这些属性设置默认值,以下是要求的默认值:
          String类型的默认值为字符串
www.itheima.com int/Integer类型的默认值为100
          boolean/Boolean类型的默认值为true double/Double的默认值为0.01D.
          只需要设置带有getXxx/isXxx/setXxx方法的属性,非JavaBean属性不设置,请用代码实现。

在javabean中的属性名未知情况下,可以不用jsp实现吗?反射和内省不是都要用到属性名吗?


作者: 007诸葛亮    时间: 2013-6-8 17:58
如果要给JavaBean 的某个属性赋值,可以用 <jsp:setProperty>标签,例如:<jsp:setProperty name="myBean" property="count" value="0" />     将id为myBean(name的值)的Bean的count的值设置为“0”(value的值)。
暂时只会jsp实现!
作者: slatop@qq.com    时间: 2013-6-8 18:15
 不太明白你的意思,发点我之前写的练习题给你,或许对你有帮助

使用内省一个JavaBean的成员写入与读取方法  


//创建内省对象
  IntroSpector iSpector = new IntroSpector();
  
  new PropertyDescriptor("num",IntroSpector.class).getWriteMethod().invoke(iSpector, 1232);
  System.out.println(iSpector.getNum());
  
  Object numObject =
  new PropertyDescriptor("num", iSpector.getClass()).getReadMethod().invoke(iSpector, null);
  System.out.println(numObject);



















使用反射改变对象中所有参数中包含的数字

package com.heima.test;

import java.lang.reflect.*;

public class Main {

public static void main(String[] args)throws Exception{
  //得到类的字节码类
  Class cls = ReflectPoint.class;
  //以类名方式得到字节码类
  Class clsArgs = Class.forName("com.heima.test.ReflectPoint");
  //获取该类的带参构造方法
  Constructor constructor1 = clsArgs.getConstructor(int.class,int.class,int.class,int.class,int.class);
  //获取该类的无参数构造方法
  Constructor constructor2 = clsArgs.getConstructor();
  //通过反射创建一个无参实例
  ReflectPoint rPoint = (ReflectPoint)constructor2.newInstance();
  //单句反射创建一个有参实例
  ReflectPoint onePoint = (ReflectPoint)Class.forName("com.heima.test.ReflectPoint")
  .getConstructor(int.class,int.class,int.class,int.class,int.class).newInstance(551, 231, 425, 435, 576);
  //打印
  System.out.println(onePoint.toString());
  //获取参数对象
  Field[] fields = cls.getDeclaredFields();
  //迭代
  for (Field field : fields) {
   //符合int型
   if (field.getType() == int.class) {
    //将每个参数的值以string形势取出
    String str = field.get(onePoint).toString();
    //替换其中的内容
    str = str.replace('5', '9');
    //将字符串转为Integer
    Integer num = Integer.valueOf(str);
    //将新数据设置回对应对象的变量中
    field.set(onePoint, num);
   }
  }
  //打印
  System.out.println(onePoint.toString());
}

}
作者: 不喝茶的陆羽    时间: 2013-6-8 18:41
007诸葛亮 发表于 2013-6-8 17:58
如果要给JavaBean 的某个属性赋值,可以用 标签,例如:     将id为myBean(name的值)的Bean的count的值设置 ...

谢谢回复,但是这是我入学考试中一道不会的题,按理说jsp不在考试范围啊...
作者: 007诸葛亮    时间: 2013-6-8 18:52
不喝茶的陆羽 发表于 2013-6-8 18:41
谢谢回复,但是这是我入学考试中一道不会的题,按理说jsp不在考试范围啊... ...

是的,估计那天您应该买个彩票什么的,中奖机率应该很大!:P
作者: 不喝茶的陆羽    时间: 2013-6-8 20:07
帖子结啦,特此感谢 黑马-龙见炜 的大力帮助!~
作者: zx7660    时间: 2016-4-1 19:26
大哥,我入学考试也做这道题,具体怎么做得啊....求告知!!




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