在进行一些代码审查时,我偶然发现了这一点:
人们通常为一个装箱的布尔变量赋值Boolean.TRUE或Boolean.FALSE赋值,但对原始变量使用true/ false。最好的方法是什么?
根据我合作过的一位架构师的说法 - 他说每次你将true/分配false给一个变量时,都会创建一个新的 Boolean 实例。如果我们将布尔变量分配给静态实例 - Boolean.FALSE/ ,我们可以跳过它Boolean.TRUE。如果变量是原始变量,则完成自动拆箱。
自动拆箱是否比布尔变量的初始化更快?差异不大,我认为这只是对代码的微优化,但我想了解更多。
我正在尝试迁移我的项目以使用 Junit5。到目前为止,我一直在使用“LogSpy”类,它基本上拦截并保存所有日志,以便可以轻松测试它们。使用 Junit4 和 Spock 测试,我能够使用 @Rule 注释来初始化我的日志拦截器类(即使它是在 Spock 测试中)。迁移到 Junit5 后,此注释似乎没有初始化所需的日志拦截器类,我找不到原因。为什么会发生这种情况?Junit4 和 5 在 @Rule 注释方面有什么区别?有办法解决这个问题吗?
这就是我初始化 LogSpy 类的方式。它在 JUnit 单元测试中初始化,但不在 Spock 测试中初始化。
@Rule
public LogSpy logSpy = new LogSpy()
Run Code Online (Sandbox Code Playgroud)