在Java中,有没有办法找到传递给函数的变量的名称?

2022-09-02 10:16:59

我有一个名为testForNull的Java函数

   public static void testForNull(Object obj)
    {
     if (obj == null)
      {
        System.out.println("Object is null");
      }
    }

我用它来测试多个对象,以确保它们不为空。但是,我无法以这种方式说出变量的名称。

例如。如果我说

    testForNull(x);
    testForNull(y);
    testForNull(z);

我无法判断三行中的哪一行导致了“对象为空”输出。当然,我可以简单地向函数添加另一个参数,并拥有类似的东西

    testForNull(x, "x");
    testForNull(y, "y");
    testForNull(z, "z");

但是我想知道是否可以在不显式传递变量的情况下推断出变量的名称。谢谢。


答案 1

请考虑该参数可能不是变量(因此没有名称):

testForNull(x != y);

答案 2

不,没有这样的方法。您必须显式传递变量的名称。但是,如果您的对象具有字段“name”或通过函数显示其名称,则可能会对您有所帮助。toString()


推荐