从 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 中获取对象的变量名的主要内容,如果未能解决你的问题,请参考以下文章

unity中怎样让一个对象切换脚本

js一个对象的属性名是一个变量如何设置和获取值

不确定如何仅使用kotlin在可打包对象Arraylist中检索某些变量

ArrayList的使用

使用jackson从改造中反序列化json,其中相同的变量名可以代表两个不同的对象

js 一个对象的属性名是一个变量怎么处理?