1. 程式人生 > >如何修改類的成員屬性的預設值

如何修改類的成員屬性的預設值

這是一道黑馬入學測試題:

存在一個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));
					}
				}
			}
		 }
	}
}
執行結果: