从 ArrayList 中获取对象的变量名
Posted
技术标签:
【中文标题】从 ArrayList 中获取对象的变量名【英文标题】:Get variable name of object from an ArrayList 【发布时间】:2014-11-05 07:14:21 【问题描述】:我正在使用以下代码创建一个 JTextField 的 ArrayList。
ArrayList<JTextField> cmp = new ArrayList<>();
cmp.add(txtAmount);
cmp.add(txtBillTo);
cmp.add(txtBranch);
将这个 ArrayList 传递给一个方法后,我需要打印文本字段的“变量名”。我可以使用 SetName 和 GetName 打印一些名称。但我需要输出为 txtAmount、txtBillTo、txtBranch。
有没有办法找到textfield的变量名?
【问题讨论】:
【参考方案1】:不,你不能这样做。您要求的信息只是没有记录。唯一的办法就是自己存储:
Map<String, JTextField> cmp = new HashMap<>();
cmp.put("txtAmount",txtAmount);
cmp.put("txtBillTo", txtBillTo);
cmp.put("txtBranch", txtBranch);
如果您需要按照将它们放入集合中的顺序保持相同的顺序,请使用LinkedHashMap
而不是HashMap
,因为HashMap
可能会更改顺序。
【讨论】:
【参考方案2】:您正在寻找的内容需要方法代码的反射,这是 Scala 等语言通过宏/编译时反射支持的东西。但是 Java 本身不支持方法代码的运行时或编译时反射,只支持类/字段/函数的运行时反射,尽管有些人将自己的 Java 解析器拉到一起从源文件中获取信息,而其他人则从源文件中提取信息类文件调试信息。两者都没有官方支持的 API。
最好的办法是将您想要的名称与字段一起放置,这显然是重复的,因此可能会意外出现差异,但您的选择是有限的。
【讨论】:
以上是关于从 ArrayList 中获取对象的变量名的主要内容,如果未能解决你的问题,请参考以下文章
不确定如何仅使用kotlin在可打包对象Arraylist中检索某些变量