gpt4 book ai didi

java - 检查 Field[] 是否包含名称为 XXX 的字段

转载 作者:行者123 更新时间:2023-12-02 05:32:34 25 4
gpt4 key购买 nike

我得到了一个类的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)

关于java - 检查 Field[] 是否包含名称为 XXX 的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25378144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com