假设我有一个方法foo:
public Integer foo () { return 1; }
Run Code Online (Sandbox Code Playgroud)
以上哪个选项的价格较低?拳击还是拆箱?
assert(1, (int) foo()));
Run Code Online (Sandbox Code Playgroud)
与
assert((Integer)3, foo());
Run Code Online (Sandbox Code Playgroud)
以上哪个选项的价格较低?拳击还是拆箱?
当你问哪个更便宜时,你正专注于错误的问题.这是过早优化的一个示例,使用包装器类将对性能产生轻微影响.所以,如果你想优化,你应该使用原语int.
public int foo () { return 1; }
Run Code Online (Sandbox Code Playgroud)
并且不要尝试优化断言,它们可以(并且可能应该)在生产环境中被禁用.
来自的信息 java -help
Run Code Online (Sandbox Code Playgroud)java -help | grep assertions -ea[:<packagename>...|:<classname>] -enableassertions[:<packagename>...|:<classname>] enable assertions with specified granularity -da[:<packagename>...|:<classname>] -disableassertions[:<packagename>...|:<classname>] disable assertions with specified granularity -esa | -enablesystemassertions enable system assertions -dsa | -disablesystemassertions disable system assertions