码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-28 18:10:01      阅读:448      评论:0      收藏:0      [点我收藏+]

标签:反射

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

存在一个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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!