gpt4 book ai didi

java - 在 Java 中,如何获取给定字符串的属性及其名称?

转载 作者:太空狗 更新时间:2023-10-29 22:36:21 24 4
gpt4 key购买 nike

很抱歉提出这样的问题,但我真的无法在 Google 中找到答案。所以说我有一个类 private String myColor 并且我有一个字符串“myColor”。现在我想操纵 myColor 属性。我该怎么做?

编辑:抱歉,问题不明确,我想最好的方法是解释我需要它做什么。我有一个 Swing 表单,想在加载 gui 时使用首选项 api 来设置字段的值。所以我可以读取所有字段,然后为每个字段执行 outputDirectoryTextField.setText(valueFromPrefsAPI);,但这似乎是一些不需要的编码,所以我想要一个数组(哈希?)使用字段名称并循环遍历它们,如下所示:

String[] myTextInputs = {"thisInput", "thatInput"};

for (String inputName : myTextInputs) {
String value = prefs.get(inputName, "");
/* some code I'm seeking to find out*/.setText(value);
}

最佳答案

您可以使用反射来检查任何对象的内容,如下所示:

Object o = ...; // The object you want to inspect
Class<?> c = o.getClass();

Field f = c.getDeclaredField("myColor");
f.setAccessible(true);

String valueOfMyColor = (String) f.get(o);

请注意,getDeclaredField() 只会返回对象类声明的字段。如果您正在寻找由父类(super class)声明的字段,您应该遍历该对象的所有类(通过重复执行 c = c.getSuperclass() 直到 c == null)

如果你想改变字段的值你可以使用set方法:

f.set(o, "some-new-value-for-field-f-in-o")

其他详细信息:https://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Field.html


https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getField(java.lang.String)

您可以使用 getField(...) 如果在类中找不到,它将在父类(super class)上搜索。

关于java - 在 Java 中,如何获取给定字符串的属性及其名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2043471/

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