标签:反射
这是一道黑马入学测试题:
存在一个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)); } } } } } }运行结果:
标签:反射
原文地址:http://blog.csdn.net/u014010769/article/details/46125059