java反射bean的属性值_java反射取属性值

import java.lang.reflect.Field;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;i

//Bean.java

package com.sort;

public class Bean {

private String name;

private String sex;

public Bean() {

super();

// TODO Auto-generated constructor stub

}

public Bean(String name, String sex) {

super();

this.name = name;

this.sex = sex;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

}

//Test.java

package com.sort;

import java.lang.reflect.Field;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.List;

public class Test {

public static void main(String[] args) {

Method metd = null;

String fdname = null;

// 添加两个测试数据。。。

List list = new ArrayList();

list.add(new Bean("张三", "女"));

list.add(new Bean("李四", "男"));

try {

// 遍历集合

for (Object object : list) {

Class clazz = object.getClass();// 获取集合中的对象类型

Field[] fds = clazz.getDeclaredFields();// 获取他的字段数组

for (Field field : fds) {// 遍历该数组

fdname = field.getName();// 得到字段名,

metd = clazz.getMethod("get" + change(fdname), null);// 根据字段名找到对应的get方法,null表示无参数

if ("name".equals(fdname) && metd != null) {// 比较是否在字段数组中存在name字段,package com;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public c如果不存在短路,如果存在继续判断该字段的get方法是否存在,同时存在继续执行

Object name = metd.invoke(object, null);// 调用该字段的get方法

System.out.print("姓名:" + name);// 输出结果

}

if ("sex".equals(fdname) && metd != null) {// 同上

Object sex = metd.invoke(object, null);

System.out.println("\t性别:" + sex);

}

}

}

} catch (SecurityException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchMethodException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* @param src

*            源字符串

* @return 字符串,将src的第一个字母转换为大写,src为空时返回null

*/

public static String change(String src) {

if (src != null) {

StringBuffer sb = new StringBuffer(src);

sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));

return sb.toString();

} else {

return null;

}

}

}

反射的应用一般是要用到某些特殊类的属性和方法,无论是一般方法还是私有方法都可以通过反射机制获取到。 下面将介绍其中的6种属性的获取:一般构造函数,私有有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值