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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 梁小刀11 中级黑马   /  2015-2-1 22:02  /  1060 人查看  /  3 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

6、 存在一个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属性不设置,请用代码实现.


这个题目是什么意思?设置默认数值?不是引用的时候就设置不就是了吗?

3 个回复

倒序浏览
应该考察的是反射吧~
回复 使用道具 举报


  1. import java.beans.BeanInfo;
  2. import java.beans.Introspector;
  3. import java.beans.PropertyDescriptor;
  4. import java.lang.reflect.Method;

  5. /**
  6. *                 存在一个JavaBean,它包含以下几种可能的属性:
  7.        1:boolean/Boolean
  8.        2:int/Integer
  9.        3:String
  10.        4:double/Double
  11.      属性名未知,现在要给这些属性设置默认值,以下是要求的默认值:
  12.        String类型的默认值为字符串 www.itheima.com
  13.        int/Integer类型的默认值为100
  14.      boolean/Boolean类型的默认值为true
  15.        double/Double的默认值为0.01D.
  16.   只需要设置带有getXxx/isXxx/setXxx方法的属性,非JavaBean属性不设置,请用代码实现
  17. * @author Administrator
  18. *
  19. */
  20. public class Test7 {
  21.         public static void main(String[] args)throws Exception {
  22.                 //获取字节码文件对象
  23.                 Class<javaBean> c = javaBean.class;
  24.                 Object obj = c.newInstance();
  25.                
  26.                 //内省测试类,获取javaBean的属性信息
  27.                 BeanInfo bi = Introspector.getBeanInfo(c);
  28.                
  29.                 //获取javaBean属性数组
  30.                 PropertyDescriptor[] pds = bi.getPropertyDescriptors();
  31.                
  32.                 //迭代每个具体的属性
  33.                 for(PropertyDescriptor pd : pds){
  34.                         //获取属性名
  35.                         Object name = pd.getName();
  36.                         
  37.                         //获取属性类型
  38.                         Object type = pd.getPropertyType();
  39.                         
  40.                         //获取get方法
  41.                         Method getMethod = pd.getReadMethod();
  42.                         
  43.                         //获取set方法
  44.                         Method setMethod = pd.getWriteMethod();
  45.                         
  46.                         //因为测试类是一个本类,所以要去除它
  47.                         if(!"class".equals(name)){
  48.                                 //调用修改前的属性
  49.                                 if(getMethod!=null){
  50.                                         System.out.println(type+"修改前默认值:"+getMethod.invoke(obj));
  51.                                 }
  52.                                 //修改各种属性
  53.                                 if(type==String.class){
  54.                                         setMethod.invoke(obj, "www.itheima.com");
  55.                                 }else if(type==int.class){
  56.                                         setMethod.invoke(obj, 100);
  57.                                 }else if(type==boolean.class){
  58.                                         setMethod.invoke(obj, true);
  59.                                 }else if(type==double.class){
  60.                                         setMethod.invoke(obj, 0.01d);
  61.                                 }
  62.                                 //调用修改后的属性
  63.                                 if(getMethod!=null){
  64.                                         System.out.println(type+"修改后默认值:"+getMethod.invoke(obj));
  65.                                 }
  66.                         }
  67.                 }
  68.         }
  69. }
  70. //测试类
  71. class javaBean{
  72.         
  73.         private String str;
  74.         private int x;
  75.         private boolean flag;
  76.         private double d;
  77.         
  78.         public String getStr() {
  79.                 return str;
  80.         }

  81.         public void setStr(String str) {
  82.                 this.str = str;
  83.         }

  84.         public int getX() {
  85.                 return x;
  86.         }

  87.         public void setX(int x) {
  88.                 this.x = x;
  89.         }

  90.         public boolean isFlag() {
  91.                 return flag;
  92.         }

  93.         public void setFlag(boolean flag) {
  94.                 this.flag = flag;
  95.         }

  96.         public double getD() {
  97.                 return d;
  98.         }

  99.         public void setD(double d) {
  100.                 this.d = d;
  101.         }

  102.         public void show(){
  103.                 System.out.println("Hello Hei Ma!");
  104.         }
  105. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
lwj123 + 2

查看全部评分

回复 使用道具 举报
赞一下,看一看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马