当前位置: 首页 > 面试题库 >

Java从字符串中按名称获取变量

邹举
2023-03-14
问题内容

html" target="_blank">示例代码:

int width = 5;
int area = 8;
int potato = 2;
int stackOverflow = -4;

现在,说我想让用户输入一个字符串:

String input = new Scanner(System.in).nextLine();

然后,说出用户输入potato。我将如何检索命名的变量potato并对其进行处理?像这样:

System.getVariable(input); //which will be 2
System.getVariable("stackOverflow"); //should be -4

我抬头看了一些东西,却没发现太多。我确实找到了对“反射API”的引用,但是对于这一简单任务而言,它似乎太复杂了。

有没有办法做到这一点,如果是的话,那是什么?如果“反射”确实有效并且是唯一的方法,那么我将如何使用它来做到这一点?它的教程页面包含了各种我无法理解的内部内容。

编辑:我需要将Strings 保留在变量中以进行我的操作。(我不能使用Map


问题答案:

对于你在这里所做的事情,使用反射似乎不是一个好的设计。最好使用Map<String, Integer>例如:

static final Map<String, Integer> VALUES_BY_NAME;
static {
    final Map<String, Integer> valuesByName = new HashMap<>();
    valuesByName.put("width", 5);
    valuesByName.put("potato", 2);
    VALUES_BY_NAME = Collections.unmodifiableMap(valuesByName);
}

Or with Guava:

static final ImmutableMap<String, Integer> VALUES_BY_NAME = ImmutableMap.of(
    "width", 5,
    "potato", 2
);

Or with an enum:

enum NameValuePair {

    WIDTH("width", 5),
    POTATO("potato", 2);

    private final String name;
    private final int value;

    private NameValuePair(final String name, final int value) {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public String getValue() {
        return value;
    }

    static NameValuePair getByName(final String name) {
        for (final NameValuePair nvp : values()) {
            if (nvp.getName().equals(name)) {
                return nvp;
            }
        }
        throw new IllegalArgumentException("Invalid name: " + name);
    }
}


 类似资料:
  • 本文向大家介绍如何在Python中获取变量名称作为字符串?,包括了如何在Python中获取变量名称作为字符串?的使用技巧和注意事项,需要的朋友参考一下 实际上,这不是您在Python中所做的事情,因为变量实际上是对象的名称映射。Python中唯一具有规范名称的对象是模块,函数和类,并且在定义函数或类或导入模块后,当然不能保证此规范名称在任何命名空间中都具有任何含义。这些名称也可以在创建对象之后进行

  • 问题内容: 我有一个包含变量名称的字符串。我想获取该变量的值。 是否有可能访问该值使用? 问题答案: 我建议您改用: 通过执行操作创建地图 然后改变 至 并使用访问值

  • 问题内容: 因此,我试图在Swift中将“实际变量名称”获取为String,但是还没有找到一种方法…或者也许我正以一个不好的角度看待这个问题和解决方案。 所以这基本上是我想要做的: 不幸的是,我无法在苹果文档中找到任何与之接近的东西,但这是: 但是,这给出了变量本身或变量类型的信息,在这种情况下为字符串,我想要变量的实际名称。 问题答案: 根据更新,它在Swift 3中通过

  • 问题内容: 如何通过反射找出方法的字符串名称是什么? 例如给出: 我想获取字符串“ getFoo”,如下所示: 问题答案: 由于方法本身不是对象,因此它们没有直接的属性(就像您希望使用JavaScript之类的一流函数那样)。 您能做的最接近的是致电 是一个对象,您可以使用它调用任何反射方法。 但是,据我所知,一种方法无法识别自己。

  • 问题内容: 我搜寻了互联网,但找不到答案: 我正在使用for循环创建36个名为a1,a2等的按钮,并同时为每个按钮分配一个唯一的操作命令。 稍后,我想从actionPerformed(ActionEvent e)方法中获取按钮的名称。 我可以使ActionCommand非常容易,但是我也需要按钮的名称。 任何帮助,不胜感激! 编辑: 这是我正在使用的代码: 这为6x6网格提供了36个按钮,分别为a