我正在使用以下代码创建一个JTextFields的ArrayList。
ArrayList<JTextField> cmp = new ArrayList<>();
cmp.add(txtAmount);
cmp.add(txtBillTo);
cmp.add(txtBranch);
在将这个ArrayList传递到一个方法中之后,我需要打印文本字段的"变量名"。我可以使用SetName和GetName来打印一些名称。但我需要输出为txtAmount、txtBillTo、txtBranch。
有没有找到textfield的变量名?
不,你不能这样做。你所要求的信息没有被记录下来。唯一的方法是自己存储:
Map<String, JTextField> cmp = new HashMap<>();
cmp.put("txtAmount",txtAmount);
cmp.put("txtBillTo", txtBillTo);
cmp.put("txtBranch", txtBranch);
如果您需要将东西按相同的顺序放入集合,则使用LinkedHashMap
而不是HashMap
,因为HashMap
可能会更改顺序。
您正在寻找的需要方法代码的反射,这是Scala等语言通过宏/编译时反射支持的。然而,Java本身不支持方法代码的运行时或编译时反射,只支持类/字段/函数的运行时反射,尽管有些人已经将自己的Java解析器组合在一起,从源文件中获取信息,而另一些人则从类文件调试信息中获取信息。两者都没有官方支持的API。
你最好的选择是把你想要的名字和字段放在一起,这显然是重复的,因此可能会意外地偏离,但你的选择是有限的。