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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 CM520Z 于 2015-9-20 08:01 编辑

package com.itheima;
/**
* 第五题   存在一个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属性不设置,请用代码实现
*

*/

import java.beans.*;  
import java.lang.reflect.Method;  
class TestBean {
    private boolean bl;
    private Integer age;
    private String str;
    private Double db;
    private Boolean bl2;
    private int age2;
    private double db2;

    public TestBean(int i, int j) {
      //  TODO Auto-generated constructor stub
    }
    //实现相关的getXxx/isXxx/setXxx方法
    public boolean isBl() {
        return bl;
    }
    public void setBl(boolean bl) {
        this.bl = bl;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getStr() {
        return str;
    }
    public void setStr(String str) {
        this.str = str;
    }
    public Double getDb() {
        return db;
    }
    public void setDb(Double db) {
        this.db = db;
    }
    public Boolean getBl2() {
        return bl2;
    }
    public void setBl2(Boolean bl2) {
        this.bl2 = bl2;
    }
    public int getAge2() {
        return age2;
    }
    public void setAge2(int age2) {
        this.age2 = age2;
    }
    public double getDb2() {
        return db2;
    }
    public void setDb2(double db2) {
        this.db2 = db2;
    }
}


public class Test5
{            
          public static void main(String[] args) throws Exception
          {  
                //实例化一个javabean类  
               javaBean jbBean =new javaBean(); //错误提示这里
                //将该类当做javabean类来看  
                BeanInfo beanInfo=Introspector.getBeanInfo(jbBean.getClass());  
                //获取到所有属性的描述  
                PropertyDescriptor[] pt=beanInfo.getPropertyDescriptors();  
                  
                //对该类进行迭代 获取到该属性的名字  
                for(PropertyDescriptor pd : pt){  
                    //获得当前迭代属性的set方法  
                    Method readMethod=pd.getWriteMethod();  
                    //获得当前类迭代的属性类型  
                    Class<?> proClass=pd.getPropertyType();  
                     
                    //判断属性类型 并进行set默认值设值  
                    if(proClass==String.class)//如果是String类型设置为 www.itheima.com  
                        readMethod.invoke(jbBean,"www.itheima.com");  
                    else if(proClass==int.class||proClass==Integer.class)//如果是整类型设置为 100  
                        readMethod.invoke(jbBean, 100);  
                    else if(proClass==double.class||proClass==Double.class)//如果是双精度类型设置为 0.01D  
                        readMethod.invoke(jbBean, 0.01D);     
                    else if(proClass==boolean.class||proClass==Boolean.class)//如果是布尔类型设置为ture  
                        readMethod.invoke(jbBean, true);      
                    }  
                    System.out.println("完成 over");//调试  
                }  
            }  
        求解决方案

2 个回复

正序浏览
你给出了带参的构造函数,则无参的构造函数没有写出来的话,就是不具有无参构造函数,
所以你new对象时出错,
在类定义里加上无参的构造函数就好了
public TestBean() {
      //  TODO Auto-generated constructor stub
    }
回复 使用道具 举报
好好好好好好好好好好好好好好好好好好好好好好好好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马