本帖最后由 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");//调试
}
}
求解决方案 |
|