如何将字符串值转换为变量名(java)?

如何将字符串值转换为变量名(java)?,java,arrays,arraylist,collections,Java,Arrays,Arraylist,Collections,我试图找到一种将字符串值转换为变量的方法。这可能吗 例如: 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 TextF

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

例如:

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");
});
/*这是在JavaFX中*/
按钮按钮=新按钮(“单击我”);
TextField userText=新建TextField();
ArrayList randomList=新建ArrayList();
/*单击按钮时*/
按钮。设置操作(e->{
ArrayList“用户文本”=新建ArrayList();
添加(“用户文本”);
});
“用户文本”是用作变量名的用户输入


请不要推荐HashMaps或Maps,除非没有其他方法。我已经从ArrayList开始了。

我认为如果我们了解您想要实现的目标,我们可以更好地帮助您。如果没有,我建议使用对象。使用映射是另一种选择,但通常会降低代码的可读性,如果结构发生变化,维护映射将更加困难

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

    // Getters and Setters
}

我很确定您可以使用,但是每次您想要访问该变量时都需要使用反射,这将是低效和混乱的。使用地图确实更好。好吧,事实上,你从
ArrayList
开始与它无关。Java中没有办法将字符串转换为变量名。Java不是脚本语言,变量名在编译时确定。因此,
Map
是你唯一的选择。你说的“变量名”是什么意思。变量名仅在源代码中可见,因此在用户输入值时在运行时不可见。因此你的问题没有多大意义。变量是用来表示数据或结构的,开发人员可以通过引用其名称来使用这些数据或结构。让用户决定变量的名称是毫无意义的。主要是因为如果你不知道它的名字,你就不能参考它:)地图是唯一的选择
/*When button is clicked*/
button.setOnAction(e -> {
    UserData userData = new UserData();
    userData.setUserInput("The user's text");
    randomList.add(userData);
});