gpt4 book ai didi

Java - 通过反射访问非静态属性

转载 作者:行者123 更新时间:2023-11-29 05:19:19 25 4
gpt4 key购买 nike

我想用字符串名称获取我的类属性。
我有这样的代码

class Test
{
public String simple = "hello";

public void getSetting()
{
try
{
Test c = new Test();
Class cls = this.getClass();
Field field = cls.getField("simple");;
}
catch(Exception e)
{
// error
}

}
}

此代码出现错误,因为我的属性是非静态的,当我将属性更改为静态时,它工作正常,我如何通过反射获取非静态属性?

最佳答案

这是一个关于如何通过反射获取实例 Field 的独立示例。

public class Main {
// the instance field
String simple = "foo";
// some static main method
public static void main(String[] args) throws Exception {
// initializing the class as we're accessing an instance method
new Main().reflect();
}

public void reflect() {
Class<?> c = this.getClass();
try {
// using getDeclaredField for package-protected / private fields
Field field = c.getDeclaredField("simple");
// printing out field's value for this instance
System.out.println(field.get(this));
}
// TODO handle better
catch (IllegalAccessException iae) {
iae.printStackTrace();
}
catch (NoSuchFieldException n) {
n.printStackTrace();
}
}
}

输出

foo

关于Java - 通过反射访问非静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25421220/

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