如何修改类的成员属性的默认值

时间:2022-07-17 09:59:36

这是一道黑马入学测试题:

存在一个JavaBean,它包含以下几种可能的属性: 1:boolean/Boolean

2:int/Integer

3:String

4:double/Double 属性名未知,现在要给这些属性设置默认值,以下是要求的默认值:

String类型的默认值为 字符串     www.itheima.com int/Integer类型的默认值为100boolean/Boolean类型的默认值为true

double/Double的默认值为0.01D.

只需要设置带有getXxx/isXxx/setXxx方法的属性,非JavaBean属性不设置,请用代码实现

代码:

javaBean类:

package itheima;

public class TestBean {
private boolean b;
private Integer i;
private String str;
private Double d;
public boolean isB() {
return b;
}
public void setB(boolean b) {
this.b = b;
}
public Integer getI() {
return i;
}
public void setI(Integer i) {
this.i = i;
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public Double getD() {
return d;
}
public void setD(Double d) {
this.d = d;
}
}

package itheima;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

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

* @author Administrator
*
*/
public class Demo3 {
public static void main(String[] args) throws Exception {
Class clazz = Class.forName("itheima.TestBean");//加载这个类
Object bean = clazz.newInstance();//建立一个队形
BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
System.out.println(beanInfo);
PropertyDescriptor [] propertyDescriptors=beanInfo.getPropertyDescriptors();
for(PropertyDescriptor pro:propertyDescriptors){
// System.out.println(pro);
Object name=pro.getName();
// System.out.println(name);
Method getMethod=pro.getReadMethod();
Method setMethod= pro.getWriteMethod();
Object type= pro.getPropertyType();
if(!"class".equals(name)){
if(setMethod!=null){
if(type==boolean.class||type==Boolean.class){
setMethod.invoke(bean, true);
}
if(type==String.class){
setMethod.invoke(bean, "www.itheima.com");
}
if(type==double.class||type==Double.class){
setMethod.invoke(bean, 0.01D);
}
if(type==int.class||type==Integer.class){
setMethod.invoke(bean, 100);
}
if(getMethod!=null){
System.out.println(type+" "+name+"="+getMethod.invoke(bean, null));
}
}
}
}
}
}
运行结果:

如何修改类的成员属性的默认值