您的位置:首页 > 编程语言 > Java开发

Java反射得到属性的值和设置属性的值

2014-01-07 08:41 405 查看
package com.whbs.bean;

public class UserBean {
private Integer id;
private int age;
private String name;
private String address;

public UserBean(){
System.out.println("实例化");
}

public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}

}

2 > 反射测试

package com.whbs.test;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import com.whbs.bean.UserBean;

public class Test1 {

public static void main(String[] args) throws Exception {

/*
* 实列化类 方法1
*/
//String classPath = "com.whbs.bean.UserBean";
//Class cla = Test1.class.getClassLoader().loadClass(classPath);
//Object ob = cla.newInstance();

/*
* 实列化类 方法2
*/
UserBean bean = new UserBean();
bean.setId(100);
bean.setAddress("武汉");

//得到类对象
Class userCla = (Class) bean.getClass();

/*
* 得到类中的所有属性集合
*/
Field[] fs = userCla.getDeclaredFields();
for(int i = 0 ; i < fs.length; i++){
Field f = fs[i];
f.setAccessible(true); //设置些属性是可以访问的
Object val = f.get(bean);//得到此属性的值

System.out.println("name:"+f.getName()+"\t value = "+val);

String type = f.getType().toString();//得到此属性的类型
if (type.endsWith("String")) {
System.out.println(f.getType()+"\t是String");
f.set(bean,"12") ;        //给属性设值
}else if(type.endsWith("int") || type.endsWith("Integer")){
System.out.println(f.getType()+"\t是int");
f.set(bean,12) ;       //给属性设值
}else{
System.out.println(f.getType()+"\t");
}

}

/*
* 得到类中的方法
*/
Method[] methods = userCla.getMethods();
for(int i = 0; i < methods.length; i++){
Method method = methods[i];
if(method.getName().startsWith("get")){
System.out.print("methodName:"+method.getName()+"\t");
System.out.println("value:"+method.invoke(bean));//得到get 方法的值
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: