java中怎么通过关系得到java 获取对象属性值,在通过java 获取对象属性值得到属性值?

传入一个object对象,怎么才能用这个对象的get方法获取对象的属性?
[问题点数:60分]
传入一个object对象,怎么才能用这个对象的get方法获取对象的属性?
[问题点数:60分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|通过反射得到一个类的对象,如何对该对象对应的类的父类中的变量赋值?
[问题点数:20分,结帖人petal1990]
通过反射得到一个类的对象,如何对该对象对应的类的父类中的变量赋值?
[问题点数:20分,结帖人petal1990]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)1438人阅读
问题引入?比如在一个jsp表单页面有几百个填报选项,提交传入后台,肯定后台不是一个一个的request.getParameter()的方法,我们可以采用以类的形式提交,关于这个实现在另外一篇文章有介绍,现在后台获取到了实体类,我们需要得到实体类里面的每一个值,然后按对应的系数去想乘,系数是个list,里面分别对应着类的第一个属性到最后一个属性字段,那么这个应该怎么实现?这就需要用到Java的反射了,具体实现如下:
//得到类对象
Class userCla = (Class) reportVo1.getClass();//reportVo1是一个实体类
Field[] fs = userCla.getDeclaredFields();
List&String& list=new ArrayList&&();
for(int i = 0 ; i & fs. i++){
Field f = fs[i];
f.setAccessible(true); //设置些属性是可以访问的
String val = (String) f.get(reportVo1);//得到此属性的值
list.add(val);
System.out.println("name:"+f.getName()+"\t value = "+val);
这样的话,list里面就有了类的每一个属性的值,而且是从第一个属性到最后一个属性,从而可以进行其他的业务> 博客详情
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同时,又可以让我们省掉很多单纯靠分析传入的属性值来决定给实体对象设置哪些属性的值。
&&&&JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
&&&&JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。
&&&&Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
&&&&下面我们就拿一个实际的例子来阐述运用java的反射机制来达到设置和获取一个实体类的属性值的方法。
package&com.ultrapower.ultracmdb.inventory.webapp.component.special.modelManager.
import&java.lang.reflect.F
public&class&TestInvoke
&&&&@SuppressWarnings("rawtypes")
&&&&public&static&void&main(String&args[])&throws&IllegalArgumentException,&IllegalAccessException
&&&&&&&&Perpole&bean&=&new&Perpole();
&&&&&&&&//&得到类对象
&&&&&&&&Class&userCla&=&(Class)&bean.getClass();
&&&&&&&&/*
&&&&&&&&&*&得到类中的所有属性集合
&&&&&&&&&*/
&&&&&&&&Field[]&fs&=&userCla.getDeclaredFields();
&&&&&&&&for(int&i&=&0;i&&&fs.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,"caocao");&//&给属性设值
&&&&&&&&&&&&}
&&&&&&&&&&&&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");
&&&&&&&&&&&&}
&&&&&&&&System.out.println("======================================");
&&&&&&&&System.out.println("设置后的bean的值为:\n"+bean.getName()+"\t"+bean.getAge());
class&Perpole
&&&&private&String&
&&&&private&int&
&&&&public&String&getName()
&&&&&&&&return&
&&&&public&void&setName(String&name)
&&&&&&&&this.name&=&
&&&&public&int&getAge()
&&&&&&&&return&
&&&&public&void&setAge(int&age)
&&&&&&&&this.age&=&
同时欢迎朋友们加入我的QQ群交流问题:
原则上是这样的
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥

我要回帖

更多关于 java 获取对象属性值 的文章

 

随机推荐