在Java中以最简洁的方式验证输入参数的值

时间:2016-06-21 05:02:33

标签: java validation

让我们想象一下这样的验证方法调用:

validate(foo, "foo");

其中第二个参数是为foonull时撰写有意义的异常消息而提供的变量的名称。

在Java中是否可以在运行时检索提供的值的名称,以避免传递参数的名称并使方法调用看起来如下例所示?

validate(foo);

1 个答案:

答案 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