java检测对象中是否存在某个属性

2025-02-18 14:56:12
推荐回答(2个)
回答1:



Class class1=A.class;//需要检测的类

String fieldname="name";//需要检测的属性名称

/**
 * 循环遍历所有的元素,检测有没有这个名字
 */
Field[] fields=class1.getDeclaredFields();

boolean b=false;
for (int i = 0; i < fields.length; i++) {
if(fields[i].getName().equals(fieldname))
{
b=true;
break;
}
}

if(b)
System.out.println("有改属性");
else
System.out.println("没有改属性");

回答2:

你没有必要用getDeclaredFields()方法获得所有的class1的所有属性,你可以用getDeclaredField(fieldname);来获得fieldname指定的属性是否存在,如果不存在则会抛出NoSuchFieldException异常,如果存在则返回一个Field对象,你参考以下代码:
Field field;
try {
field = class1.getDeclaredField(fieldname);
} catch (NoSuchFieldException e) {
System.out.printf("没%s属性\n", fieldname);
return false;
} catch(SecurityException e) {
System.out.println("发生异常:"+e.getMessage());
return true;
}