反射怎么获取类属性类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射怎么获取类属性类型相关的知识,希望对你有一定的参考价值。
有一个类:
class People
public int ID get; set;
public string Name get; set;
public bool Register set; get;
public float Gold get; set;
我怎么通过反射获取每一个属性的类型,是Int型的,还是string型的还是float型的,我主要想实力话这个类的时候,初始化这些值,string 为Empty,Int为0.
下面是个示例代码。。。
public static void main(String args[])
People peo = new People();
Class cla = People.class;
try
Field[] fields = cla.getFields();
for(Field field:fields)
Class c = field.getType();
if(c==String.class)
field.set(peo, "EMPTY");
else if(c==Integer.class)
field.set(peo, 0);
catch (SecurityException 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();
主要就是用Class c = field.getType();
这个来获取类型。。。。
希望能帮到你。。。仍有问题可以Hi我。。。或者直接追问。。。本回答被提问者采纳 参考技术B 你可以这样的,比如:
People p=new People();
if (p.ID.GetType().Name.Equals("int32"))
p.ID = 0;
其他的类型也是这样实现的了。。。
Java+反射1+获取属性/成员变量 的名称及类型
封装的方法(可直接用)
1 /** 2 * 功能:通过反射获取指定类的属性名称及属性类型 3 * 4 * @param clazz 目标类 5 * @return 返回一个属性类型及属性名称(左:类型 右:名称) 6 */ 7 static public List<Pair<Object, Object>> getClassFielddNameAndType(Class clazz) { 8 Field[] fields = clazz.getDeclaredFields(); 9 List<Pair<Object, Object>> ofField = new ArrayList<>(); 10 for (Field field : fields) { 11 String[] str = field.getType().getName().split("\\\\."); 12 System.out.println(String.format("属性:%s %s", str[str.length - 1], field.getName())); 13 ofField.add(Pair.of(str[str.length - 1], field.getName())); 14 } 15 return ofField; 16 }
1、目标类
2、获取目标群类中的属性及属性的类型
3、代码
1 @Test 2 public void testInterfaceParam() { 3 List<Pair<Object, Object>> ofFields = getClassFielddNameAndType(FileCircleRequest.class); 4 for (int i = 0; i < ofFields.size(); i++) { 5 System.out.println(String.format("%s %s", ofFields.get(i).getLeft(),ofFields.get(i).getRight())); 6 } 7 } 8 9 /** 10 * 功能:通过反射获取指定类的属性名称及属性类型 11 * 12 * @param clazz 13 */ 14 static public List<Pair<Object,Object>> getClassFielddNameAndType(Class clazz) { 15 Field[] fields = clazz.getDeclaredFields(); 16 List<Pair<Object,Object>> ofField = new ArrayList<>(); 17 for (Field field : fields) { 18 String[] str = field.getType().getName().split("\\\\."); 19 System.out.println(String.format("属性:%s %s", str[str.length - 1], field.getName())); 20 ofField.add(Pair.of(str[str.length-1],field.getName())); 21 } 22 23 return ofField; 24 }
以上是关于反射怎么获取类属性类型的主要内容,如果未能解决你的问题,请参考以下文章