gpt4 book ai didi

java - 查看类中是否存在字段

转载 作者:IT老高 更新时间:2023-10-28 20:48:52 24 4
gpt4 key购买 nike

我有一个包含各种变量的类

public class myClass{

public int id;
public String category;
public String description;
public String start;
public String end;
}

有没有办法通过创建内部函数或从调用对象检查变量是否存在?

例如检查 myClass 是否包含名为“category”的变量(确实如此)。或者它是否包含一个名为“foo”的类别(它没有)。

最佳答案

警告:接受的答案会起作用,但它依赖于异常作为控制流,即bad practice并且应尽可能避免。

请考虑以下替代方案:

public boolean doesObjectContainField(Object object, String fieldName) {
Class<?> objectClass = object.getClass();
for (Field field : objectClass.getFields()) {
if (field.getName().equals(fieldName)) {
return true;
}
}
return false;
}

或者使用 Java 8 流的更简洁的形式:

public boolean doesObjectContainField(Object object, String fieldName) {
return Arrays.stream(object.getClass().getFields())
.anyMatch(f -> f.getName().equals(fieldName));
}

这些代码片段不依赖异常作为控制流,实际上根本不需要任何异常处理,这将使您的实现更简单、更具可读性。您只需使用类似于以下的代码调用上述方法之一:

Object someObject = ... ;
boolean fieldExists = doesObjectContainField(someObject, "foo");

附带说明,如果您需要访问类的私有(private)字段(而不是父类字段),您可以简单地将对 getFields 的调用替换为 getDeclaredFields.

关于java - 查看类中是否存在字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7324991/

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