如何修改類的成員屬性的預設值
阿新 • • 發佈:2019-01-22
這是一道黑馬入學測試題:
存在一個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)); } } } } } }