java - 在 Java 中按名称设置变量

标签 java reflection eval

我希望按照以下方式在 Java 中实现一些东西:

class Foo{
 private int lorem; //
 private int ipsum;      

 public setAttribute(String attr, int val){
  //sets attribute based on name
 }

 public static void main(String [] args){
  Foo f = new Foo();
  f.setAttribute("lorem",1);
  f.setAttribute("ipsum",2);
 }

 public Foo(){}
}

...其中变量是根据变量名设置的,变量名没有硬编码,也没有使用任何其他数据结构。这可能吗?

最佳答案

下面是使用反射实现 setAttribute 的方法(我已经重命名了函数;不同的字段类型有不同的反射函数):

public void setIntField(String fieldName, int value)
        throws NoSuchFieldException, IllegalAccessException {
    Field field = getClass().getDeclaredField(fieldName);
    field.setInt(this, value);
}

关于java - 在 Java 中按名称设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/276555/

相关文章:

javascript - 解析以字符串形式存储在对象常量/JSON语法中的函数并进行区分

java - 混淆 Java 泛型错误与 Map 和 Collector

java - 在 Java 5 中使用原始数组作为实际类型参数有什么问题?

java - 如何使用 Java 反射来调用引用变量上的方法?

Javascript - 使用 <script> 标签包含另一个脚本?

javascript - 如何使用 "eval"将多个变量传递到 "with"表达式中?

java - hibernate 搜索: single search term with space

java - 通过触摸检测位图中的颜色

c# - 使用反射动态地将属性转换为其实际类型

java - Reflections.getTypesAnnotatedWith(...) 找到类,但 getAnnotations().length 为 0