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

Cod*_*lue 16 java metadata

我有一个名为testForNull的Java函数

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

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

例如.如果我说

    testForNull(x);
    testForNull(y);
    testForNull(z);
Run Code Online (Sandbox Code Playgroud)

我无法分辨这三行中的哪一行导致"Object is null"输出.当然,我可以简单地在函数中添加另一个参数,并具有类似的功能

    testForNull(x, "x");
    testForNull(y, "y");
    testForNull(z, "z");
Run Code Online (Sandbox Code Playgroud)

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

Oli*_*rth 16

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

testForNull(x != y);
Run Code Online (Sandbox Code Playgroud)


Vin*_*tin 5

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

  • 如果对象不可能通过toString()显示其名称,如果它为null ;-) (10认同)