gpt4 book ai didi

java - java中如何使用字符串与字段名进行比较?

转载 作者:行者123 更新时间:2023-12-01 23:39:17 24 4
gpt4 key购买 nike

我有一个名为 MyClass 的类。它有许多 MyField 类型的字段。如何返回对名称与字符串值匹配的特定字段的引用?

public class MyClass{
public MyField field1;
public MyField field2;
public MyField field3;

public MyField whichField(String nameOfField){
//e.g. String = "field3", then return field3
//of course I can do if else, but it will be tedious If I have long list of MyField fields, can I iterate over all field names, and return whose name matches?

}

}
<小时/>

编辑

我尝试从下面的答案中进行反射(reflection),我创建了一个临时占位符,并且我希望重新声明它,但是,

MyField temp = MyClass.class.getDeclaredField(whichFieldString);

不起作用,我收到类型不匹配,无法转换错误

我该如何转换这个?如何返回该字段?

最佳答案

作为替代方案:

如果所有字段都具有相同类型并且通过字段名称访问(大多数情况下),您可以通过利用 Map 来避免使用反射的麻烦和脆弱性。 。

映射将键(在您的情况下为“字段名称”)与值相关联。 MyClass 看起来像这样,而不是任意数量的字段:

public class MyClass {
private final Map<String, MyField> fields = new HashMap<>();

/* code to initially fill the map */

public MyField whichField(String fieldName) {
return fields.get(fieldName);
}
}

关于java - java中如何使用字符串与字段名进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18203249/

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