有一些模式用于检查方法的参数是否已null赋值.
首先是经典之作.它在自制代码中很常见,并且很明显可以理解.
public void method1(String arg) {
if (arg == null) {
throw new NullPointerException("arg");
}
}
Run Code Online (Sandbox Code Playgroud)
其次,您可以使用现有框架.该代码看起来更好一点,因为它只占用一行.缺点是它可能会调用另一个方法,这可能会使代码运行得慢一些,具体取决于编译器.
public void method2(String arg) {
Assert.notNull(arg, "arg");
}
Run Code Online (Sandbox Code Playgroud)
第三,你可以尝试调用一个没有副作用的方法.这可能看起来很奇怪,但它比上述版本的令牌更少.
public void method3(String arg) {
arg.getClass();
}
Run Code Online (Sandbox Code Playgroud)
我没有看到广泛使用的第三种模式,感觉就像我自己发明了它一样.我喜欢它的简洁性,因为编译器很有可能完全优化它或将其转换为单个机器指令.我还用行号信息编译我的代码,所以如果NullPointerException抛出一个,我可以追溯到确切的变量,因为我每行只有一个这样的检查.
您更喜欢哪种支票,为什么?