2 .检查字段[]中是否包含名称为XXX的字段



我得到了一个类的Field数组:

Class<?> clazz = Class.forName(FULL_CLASS_NAME);
Field[] fields = clazz.getFields();

我想检查上面的fileds数组是否包含一个名为"sumUp"的字段。我正在寻找一种不通过fields的每个元素迭代的方式。我试着:

String[] fieldNames = Arrays.copyOf(fields, fields.length, String.class);
boolean hasField = Arrays.asList(fieldNames).contains("sumUp")); 

但是编译器报错:

The method copyOf(U[], int, Class<? extends T[]>) in the type Arrays is not applicable for the arguments (Field[], int, Class<String>)

我想知道是否有可能修复上述错误?如果没有,有什么替代方法呢?

您可以通过Class.getField(String name)简单地通过名称获取字段:

Class<?> clazz = Class.forName(FULL_CLASS_NAME);
try {
    Field f = clazz.getField("sumUp");
    System.out.println("sumUp field exists");
} catch (NoSuchFieldException e){
    System.out.println("sumUp field does not exist");
}

getField()查找public成员字段。如果您还需要查找protectedprivate字段,您可以使用Class.getDeclaredField(String name)

相关内容

  • 没有找到相关文章

最新更新