黑马程序员技术交流社区
标题:
[急]考试题目
[打印本页]
作者:
梁小刀11
时间:
2015-2-1 22:02
标题:
[急]考试题目
6、 存在一个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属性不设置,请用代码实现.
这个题目是什么意思?设置默认数值?不是引用的时候就设置不就是了吗?
作者:
Smart_lll
时间:
2015-2-1 23:50
应该考察的是反射吧~
作者:
Imp_x
时间:
2015-2-2 12:06
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 Test7 {
public static void main(String[] args)throws Exception {
//获取字节码文件对象
Class<javaBean> c = javaBean.class;
Object obj = c.newInstance();
//内省测试类,获取javaBean的属性信息
BeanInfo bi = Introspector.getBeanInfo(c);
//获取javaBean属性数组
PropertyDescriptor[] pds = bi.getPropertyDescriptors();
//迭代每个具体的属性
for(PropertyDescriptor pd : pds){
//获取属性名
Object name = pd.getName();
//获取属性类型
Object type = pd.getPropertyType();
//获取get方法
Method getMethod = pd.getReadMethod();
//获取set方法
Method setMethod = pd.getWriteMethod();
//因为测试类是一个本类,所以要去除它
if(!"class".equals(name)){
//调用修改前的属性
if(getMethod!=null){
System.out.println(type+"修改前默认值:"+getMethod.invoke(obj));
}
//修改各种属性
if(type==String.class){
setMethod.invoke(obj, "www.itheima.com");
}else if(type==int.class){
setMethod.invoke(obj, 100);
}else if(type==boolean.class){
setMethod.invoke(obj, true);
}else if(type==double.class){
setMethod.invoke(obj, 0.01d);
}
//调用修改后的属性
if(getMethod!=null){
System.out.println(type+"修改后默认值:"+getMethod.invoke(obj));
}
}
}
}
}
//测试类
class javaBean{
private String str;
private int x;
private boolean flag;
private double d;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public double getD() {
return d;
}
public void setD(double d) {
this.d = d;
}
public void show(){
System.out.println("Hello Hei Ma!");
}
}
复制代码
作者:
zw937820438
时间:
2015-2-3 14:31
赞一下,看一看
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2