Java 从ArrayList获取对象的变量名

Java 从ArrayList获取对象的变量名,java,netbeans,arraylist,components,Java,Netbeans,Arraylist,Components,我正在使用以下代码创建JTextFields的ArrayList ArrayList<JTextField> cmp = new ArrayList<>(); cmp.add(txtAmount); cmp.add(txtBillTo); cmp.add(txtBranch); ArrayList cmp=new ArrayList(); cmp.添加(txtAmount); cmp.add(txtBillTo); cmp.add(TXT分行); 将此ArrayLis

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

ArrayList<JTextField> cmp = new ArrayList<>();
cmp.add(txtAmount);
cmp.add(txtBillTo);
cmp.add(txtBranch);
ArrayList cmp=new ArrayList();
cmp.添加(txtAmount);
cmp.add(txtBillTo);
cmp.add(TXT分行);
将此ArrayList传递到方法后,我需要打印textfield的“变量名”。我可以使用SetName和GetName打印一些名称。但是我需要输出为txtmount,txtBillTo,txtBranch


是否仍然可以找到textfield的变量名?

您要查找的内容需要方法代码的反射,这是Scala等语言通过宏/编译时反射支持的。然而,Java本身不支持方法代码的运行时或编译时反射,只支持类/字段/函数的运行时反射,尽管有些人已经集合了自己的Java解析器从源文件中获取信息,而其他人则从类文件中获取信息调试信息。它们都没有官方支持的API


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

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

Map<String, JTextField> cmp = new HashMap<>();
cmp.put("txtAmount",txtAmount);
cmp.put("txtBillTo", txtBillTo);
cmp.put("txtBranch", txtBranch);
Map cmp=newhashmap();
cmp.put(“txtAmount”,txtAmount);
cmp.put(“txtBillTo”,txtBillTo);
cmp.put(“txtBranch”,txtBranch);
如果需要保持事物的顺序不变,请将它们放入集合中,然后使用
LinkedHashMap
而不是
HashMap
,因为
HashMap
可能会更改顺序