很抱歉提出这样的问题,但我真的无法在 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/