我正在使用以下代码创建JTextFields的ArrayList。
ArrayList<JTextField> cmp = new ArrayList<>();
cmp.add(txtAmount);
cmp.add(txtBillTo);
cmp.add(txtBranch);
将此ArrayList传递给方法后,我需要打印文本字段的“变量名称”。我可以使用SetName和GetName来打印一些名称。但我需要输出为txtAmount,txtBillTo,txtBranch。
无论如何都要找到textfield的变量名吗?
答案 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
可能会更改订单。