从ArrayList获取对象的变量名称

时间:2014-09-11 11:01:39

标签: java netbeans arraylist components

我正在使用以下代码创建JTextFields的ArrayList。

ArrayList<JTextField> cmp = new ArrayList<>();
cmp.add(txtAmount);
cmp.add(txtBillTo);
cmp.add(txtBranch);

将此ArrayList传递给方法后,我需要打印文本字段的“变量名称”。我可以使用SetName和GetName来打印一些名称。但我需要输出为txtAmount,txtBillTo,txtBranch。

无论如何都要找到textfield的变量名吗?

2 个答案:

答案 0 :(得分:0)

您正在寻找的内容需要反映方法代码,这些内容由Scala等语言支持,通过宏/编译时反射。然而,Java本身并不支持方法代码的运行时或编译时反射,只支持类/字段/函数的运行时反射,尽管有些人将自己的Java解析器集合在一起以从源文件中获取信息,而其他人已将信息从类文件调试信息。这两者都没有官方支持的API。

您最好的选择是将您想要的名称与字段一起放置,这显然是重复的,因此可能会出现意外分歧但您的选择有限。

答案 1 :(得分:0)

不,你不能这样做。您要求的信息不会被记录下来。唯一的方法是自己存储:

Map<String, JTextField> cmp = new HashMap<>();
cmp.put("txtAmount",txtAmount);
cmp.put("txtBillTo", txtBillTo);
cmp.put("txtBranch", txtBranch);

如果您需要按照相同的顺序将事物放入集合中,请使用LinkedHashMap而不是HashMap,因为HashMap可能会更改订单。