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

利用反射获取java类属性并赋值

2017-11-06 18:47 351 查看
自己写的方法,通过传入Object类型的对象 来为自定义的java类赋值,返回值再进行类型转换。注意类型转换。

整个思想是通过类反射获取类字段数组,然后获取属性名,获取属性类型。循环比较,为不同类型的java类属性赋值

public Object getProperty(Object obj)throws  IllegalAccessException{
//利用反射获取类属性
Field[] field = obj.getClass().getDeclaredFields();
for (int i = 0; i < field.length; i++) {
Field f = field[i];
f.setAccessible(true);
// key:得到属性名
String key = f.getName();
//获取属性名
String name = field[i].getName();
name = name.substring(0, 1).toUpperCase() + name.substring(1);
//获取属性类型
String type = field[i].getGenericType().toString();
Method method = null;
try {
try {
if(type.equals("class java.lang.String")){
method = obj.getClass().getMethod("set"+name,String.class);
//给对象的这个属性赋值 String类型 举例 此处赋值为空字符串
method.invoke(obj, "");
}
if(type.equals("class java.lang.Integer")){
method = obj.getClass().getMethod("set"+name,Integer.class);
//给对象的这个属性赋值 Integer类型 此处赋值为1
method.invoke(obj, 1);
}
if(type.equals("int")){
method = obj.getClass().getMethod("set"+name,int.class);
//给对象的这个属性赋值 int类型
method.invoke(obj, 2);
}
//其他类型还未测试,所以没有写出
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
return obj;
}


文章内容来源于本人通过网络各方知识的学习,理解,总结,编辑。

仅用于学习。有拷贝网络相同的代码,只声明代码通过运行测试的正确性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息