【问题标题】:How can I turn a String value into a variable name (java)? [duplicate]如何将字符串值转换为变量名(java)? [复制]
【发布时间】:2015-07-29 14:16:31
【问题描述】:

我正在尝试找到一种将字符串值转换为变量的方法。这可能吗?

例如:

String str = "chicken";
/*Then have it so I can do this*/
int chicken = 2;

我知道我可以只输入变量名,但我想要这样一个用户输入,它是一个字符串,可以在单击按钮后转换为变量名。 这就是我的意思:

/*This is in JavaFX*/
Button button = new Button("Click Me");
TextField userText = new TextField();
ArrayList<List> randomList = new ArrayList<>();

/*When button is clicked*/
button.setOnAction(e -> {
    ArrayList<List> "The user's text" = new ArrayList<>();
    randomList.add("The user's text");
});

“用户的文本”是用作变量名的用户输入。

附: = 请不要推荐 HashMaps 或 Maps,除非没有其他办法。我已经开始使用 ArrayLists。

【问题讨论】:

  • 我很确定您可以使用Reflection API,但是每次您想要访问该变量时都需要使用反射,这将是低效且混乱的。使用地图确实会更好。
  • 嗯,您从ArrayList 开始的事实与此无关。 Java 中没有办法将字符串转换为变量名。 Java 不是脚本语言,变量名是在编译时确定的。所以Map 是你唯一的选择。
  • “变量名”是什么意思。变量名称仅在源代码中可见,因此在用户输入值时在运行时不可见。因此,恕我直言,您的问题没有多大意义。
  • 变量用于表示开发人员可以通过引用其名称来使用的数据或结构。让用户决定变量的名称是没有意义的。主要是因为如果你不知道它的名字就不能参考它:)
  • 一个Map是唯一的出路

标签: java arrays arraylist collections


【解决方案1】:

如果我们了解您想要完成的工作,我认为我们可以更好地帮助您。没有那个,我建议使用一个对象。使用 Map 是另一种选择,但通常它会使您的代码可读性降低,并且如果您的结构发生变化,维护 Map 将更加困难。

public class UserData {
    private String userInput;
    private List<List<?>> data = new ArrayList<>();

    // Getters and Setters
}

然后像这样使用它:

/*When button is clicked*/
button.setOnAction(e -> {
    UserData userData = new UserData();
    userData.setUserInput("The user's text");
    randomList.add(userData);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多