我喜欢使用 assert 语句,只要我能正确停用它们。我听说如果在 if 语句中包装断言,编译器基本上会将它们删除,因此它们没有影响。if (MyClass.class.desiredAssertionStatus(){assert(xyz==true)}然而,Intellij 总是建议“简化”我的陈述如下:assert(!MyClass.class.desiredAssertionStatus() || xyz==true);我想知道,intellij 建议是否真的会对性能产生影响,即编译器是否不再识别以删除它们?
2 回答
倚天杖
TA贡献1828条经验 获得超3个赞
你的陈述
if (MyClass.class.desiredAssertionStatus(){assert(xyz==true)}
看起来很复杂,intellij 的建议忽略了你最有可能应该写的只是
assert xyz;
请注意,这等效于
if (CurrentClass.class.desiredAssertionStatus()) {
if (!xyz) throw new AssertionError(...);
}
(除非您像 Holger 指出的那样动态更改断言状态),因此您要检查断言状态两次。当MyClass是当前类时,这是完全多余的,否则可能是荒谬的。
添加回答
举报
0/150
提交
取消