让我们想象一下这样的验证方法调用:
validate(foo, "foo");
其中第二个参数是为foo
为null
时撰写有意义的异常消息而提供的变量的名称。
在Java中是否可以在运行时检索提供的值的名称,以避免传递参数的名称并使方法调用看起来如下例所示?
validate(foo);
答案 0 :(得分:0)
更新
我假设您正在寻找传递给argument
的{{1}}名称,而不是该方法收到的method
名称。
由于传递的parameter
可能是object
所以在null
的情况下,不会向该方法发送任何信息。
因为引用变量只是将地址带到实际argument
的名称。我认为Object
并不关心JVM
这个名字。
您有时间发送argument
这样Object
。在这种情况下,没有methodName(new Object())
名称但只有argument
的地址传递给Object
。
因此,以下代码为您提供了一些满足您要求的选项。
您的问题中提到的解决方案实际上是由methodName
开发的库以某种方式使用,尤其是Google
NullPointerException
这样的事情可以做到,或者我不确定这个论点只是一个名字,其中包含public class TestDriveException {
public static void main(String[] args) {
MyItem myItem = null;
validate(myItem);
}
public static void validate(MyItem myItem) {
if (myItem == null) {
throw new MyArgumentException("myItem is null");
}
}
private class MyItem {
String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
private static class MyArgumentException extends NullPointerException {
public MyArgumentException(String s) {
super(s);
}
}
}
的地址。对于要从Object
传递的任何类型的信息,它必须是Object
。
您在问题中建议的另一件事也可以使用,
non null