如何获得实体类属性里属性本身?

利用反射获取实体所有属性和方法
利用反射获取实体所有属性和方法。
//实现思路:
//1.获取实体的所有字段,遍历
//2.获取字段类型
//3.调用字段的get方法,set方法
Field[] field = model.getClass().getDeclaredFields(); // 获取实体类的所有属性,返回Field数组
for (int j = 0; j & field. j++) { // 遍历所有属性
// 获取属性的名字
String name = field[i].getName();
// 将属性的首字符大写,方便构造get,set方法
name = name.substring(0, 1).toUpperCase() + name.substring(1);
// 获取属性的类型
String type = field[i].getGenericType().toString();
//get 方法
Method get = resultNewsTitles.getClass().getMethod(&get& + name);
//Method set = resultNewsTitles.getClass().getMethod(&set&+name,String.class);
if (type.equals(&class java.lang.String&)) { // 如果type是类类型,则前面包含&class &,后面跟类名
// 调用get,set方法获取属性值
//String value = (String) get.invoke(twNewsCat);
//set.invoke(resultNewsTitles, value);
if (type.equals(&class java.lang.Integer&)) {
// 调用get,set方法获取属性值
if (type.equals(&class java.lang.Boolean&)) {
// 调用get,set方法获取属性值
if (type.equals(&class java.util.Date&)) {
// 调用get,set方法获取属性值
// 如果有需要,可以仿照上面继续进行扩充,再增加对其它类型的判断
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();java如何反射遍历实体类属性和类型并赋值和获取值
- 谷普下载 |
| 您所在的位置: >
> java如何反射遍历实体类属性和类型并赋值和获取值java如何反射遍历实体类属性和类型并赋值和获取值更新:&&&&编辑:电脑问题&&&&来源:谷普下载站&&&&人气:加载中...&&&&字号:|标签:&&   实例如下:  import java.lang.reflect.F  import java.lang.reflect.InvocationTargetE  import java.lang.reflect.M  import java.util.D  /**  * 获取实体类型的属性名和类型  * @param model 为实体类  * @author kou 为传入参数  */  public class GetModelNameAndType  {  public static void testReflect(Object model) throws SecurityException,  NoSuchMethodException, IllegalArgumentException,  IllegalAccessException, InvocationTargetException,
InstantiationException  {  // 获取实体类的所有属性,返回Field数组  Field[] field = model.getClass().getDeclaredFields();  // 获取属性的名字  String[] modelName = new String[field.length];  String[] modelType = new String[field.length];  for (int i = 0; i
field. i++)  {  // 获取属性的名字  String name = field[i].getName();  modelName[i] =  // 获取属性类型  String type = field[i].getGenericType().toString();  modelType[i] =  //关键。。。可拜访私有变量  field[i].setAccessible(true);  //给属性设置  field[i].set(model,
field[i].getType().getConstructor(field[i].getType()).newInstance(kou));  // 将属性的首字母大写  name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1)  .toUpperCase());  if (type.equals(class java.lang.String))  {  // 如果type是类类型,则前面包括class ,后面跟类名  Method m = model.getClass().getMethod(get + name);  // 调用getter方式获取属性值  String value = (String) m.invoke(model);  if (value != null)  {  System.out.println(attribute value: + value);  }  }  if (type.equals(class java.lang.Integer))  {  Method m = model.getClass().getMethod(get + name);  Integer value = (Integer) m.invoke(model);  if (value != null)  {  System.out.println(attribute value: + value);  }  }  if (type.equals(class java.lang.Short))  {  Method m = model.getClass().getMethod(get + name);  Short value = (Short) m.invoke(model);  if (value != null)  {  System.out.println(attribute value: + value);  }  }  if (type.equals(class java.lang.Double))  {  Method m = model.getClass().getMethod(get + name);  Double value = (Double) m.invoke(model);  if (value != null)  {  System.out.println(attribute value: + value);  }  }  if (type.equals(class java.lang.Boolean))  {  Method m = model.getClass().getMethod(get + name);  Boolean value = (Boolean) m.invoke(model);  if (value != null)  {  System.out.println(attribute value: + value);  }  }  if (type.equals(class java.util.Date))  {  Method m = model.getClass().getMethod(get + name);  Date value = (Date) m.invoke(model);  if (value != null)  {  System.out.println(attribute value:  + value.toLocaleString());共2页:  
| 分类选择您可能在找这些java反射遍历实体类属性和类型,并赋值和获取值 - 花瓣戏雨 - CSDN博客
java反射遍历实体类属性和类型,并赋值和获取值
import java.lang.reflect.F
import java.lang.reflect.InvocationTargetE
import java.lang.reflect.M
import java.util.D
* 获取实体类型的属性名和类型
* @param model 为实体类
* @author kou
为传入参数
public class GetModelNameAndType
public static void testReflect(Object model) throws SecurityException,
NoSuchMethodException, IllegalArgumentException,
IllegalAccessException, InvocationTargetException, InstantiationException
// 获取实体类的所有属性,返回Field数组
Field[] field = model.getClass().getDeclaredFields();
// 获取属性的名字
String[] modelName = new String[field.length];
String[] modelType = new String[field.length];
for (int i = 0; i & field. i++)
// 获取属性的名字
String name = field[i].getName();
modelName[i] =
// 获取属性类型
String type = field[i].getGenericType().toString();
modelType[i] =
//关键。。。可访问私有变量
field[i].setAccessible(true);
//给属性设置
field[i].set(model,
field[i].getType().getConstructor(field[i].getType()).newInstance(&kou&));
// 将属性的首字母大写
name = name.replaceFirst(name.substring(0, 1), name.substring(0, 1)
.toUpperCase());
if (type.equals(&class java.lang.String&))
// 如果type是类类型,则前面包含&class &,后面跟类名
Method m = model.getClass().getMethod(&get& + name);
// 调用getter方法获取属性值
String value = (String) m.invoke(model);
if (value != null)
System.out.println(&attribute value:& + value);
if (type.equals(&class java.lang.Integer&))
Method m = model.getClass().getMethod(&get& + name);
Integer value = (Integer) m.invoke(model);
if (value != null)
System.out.println(&attribute value:& + value);
if (type.equals(&class java.lang.Short&))
Method m = model.getClass().getMethod(&get& + name);
Short value = (Short) m.invoke(model);
if (value != null)
System.out.println(&attribute value:& + value);
if (type.equals(&class java.lang.Double&))
Method m = model.getClass().getMethod(&get& + name);
Double value = (Double) m.invoke(model);
if (value != null)
System.out.println(&attribute value:& + value);
if (type.equals(&class java.lang.Boolean&))
Method m = model.getClass().getMethod(&get& + name);
Boolean value = (Boolean) m.invoke(model);
if (value != null)
System.out.println(&attribute value:& + value);
if (type.equals(&class java.util.Date&))
Method m = model.getClass().getMethod(&get& + name);
Date value = (Date) m.invoke(model);
if (value != null)
System.out.println(&attribute value:&
+ value.toLocaleString());
我的热门文章java&中利用反射机制获取和设置实体类的属性值
在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同时,又可以让我们省掉很多单纯靠分析传入的属性值来决定给实体对象设置哪些属性的值。
&JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
&&&&JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。但是JAVA有着一个非常突出的动态相关机制:Reflection,用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。
&&&&Java反射机制主要提供了以下功能:
在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
&&&&下面我们就拿一个实际的例子来阐述运用java的反射机制来达到设置和获取一个实体类的属性值的方法。
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&=&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 获取实体类的每个属性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信