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

很抱歉提出这样的问题,但我确实无法在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()将仅返回由对象的类声明的字段。如果要查找由超类声明的字段,则应遍历对象的所有类(通过重复执行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(…),如果未在类中找到,它将在超类上搜索。

以上是 在Java中,如何获取给定字符串名称的属性? 的全部内容, 来源链接: utcz.com/qa/402929.html

回到顶部