在Java中, 如果我已经声明了一个String,并且其中包含一个变量的名称。我可以使用该字符串访问该变量吗? 例如
int sample=10;
String test = "sample";
在这里,是否可以使用字符串测试访问整数变量样本。 如果是,那么如何。
答案 0 :(得分:1)
Java的最强方面之一是标准库提供的强大的反射API。
在我看来,Reflection使您可以在运行时检查和修改类,方法和属性的结构和行为。
反思是对当今强大的平台,框架和JVM语言的Java生态系统的唯一反应。
尽管反射功能强大,并且绝对是Java广泛成功的一部分,但我警告不要在许多情况下使用它。
大部分是反思 用于其他软件(框架,平台,语言等)使用的软件。通常,当我看到有人问反思时(特别是如果他们没有按名称来称呼它的时候),他们是在思考问题所在。
我绝对想听听您的用例,以便我们可以建议一种不同的查看方式。
下面是一些伪代码,它们说明了完成您要尝试执行的操作的一种方法。我称它为伪代码,因为我尚未对其进行编译,因此可能对其进行了优化。
在将其添加到项目中之前,我想重申一下,您应该发布您的特定问题,以便我们进行分析,并可能帮助您以不同的方式考虑它。
final String ATTR = "test";
Class<?> clazz = Class.forName("your.fully.qualified.class.name");
Field[] fields = clazz.getFields();
for ( Field field : fields ) {
String name = field.getName();
if ( name == ATTR ) {
Object value = field.get(name);
}
}