为了账号安全,请及时绑定邮箱和手机立即绑定

Java反射:如何获取变量的名称?

Java反射:如何获取变量的名称?

万千封印 2019-06-15 18:08:04
Java反射:如何获取变量的名称?使用Java反射,可以获得局部变量的名称吗?例如,如果我有这个:Foo b = new Foo();Foo a = new Foo();Foo r = new Foo();是否有可能实现一个方法,该方法可以找到这些变量的名称,如下所示:public void baz(Foo... foos){     for (Foo foo: foos) {         // Print the name of each foo - b, a, and r         System.out.println(***);      }}编辑:这个问题不同于在Java中是否有一种方法可以找到传递给函数的变量的名称?在这一点上,它更纯粹地询问是否可以使用反射来确定局部变量的名称,而另一个问题(包括公认的答案)则更侧重于测试变量的值。
查看完整描述

3 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

它是完全有可能。变量名在Java中没有通信(也可能由于编译器优化而被删除)。

编辑(与评论有关):

如果您从必须使用它作为函数参数的想法后退一步,下面是另一种选择(我不会使用-参见下面):

public void printFieldNames(Object obj, Foo... foos) {
    List<Foo> fooList = Arrays.asList(foos);
    for(Field field : obj.getClass().getFields()) {
         if(fooList.contains(field.get()) {
              System.out.println(field.getName());
         }
    }}

如果a == b, a == r, or b == r或者还有其他字段具有相同的引用。

编辑现在没有必要了,因为问题被澄清了


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 3212 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号