使用幻数会导致代码不清晰,并且如果幻数在一个位置更改但在另一个位置保持不变,则会导致错误。 此检查不会报告数字 0、1、2、3、4、5、6、7、8、9、10、100、1000、0L、1L、2L、0.0、1.0、0.0F 和 1.0F。
示例:
void checkFileSize(long bytes) {
if (bytes > 1_048_576) {
throw new IllegalArgumentException("too big");
}
}
快速修复引入了一个新常量:
static final int MAX_SUPPORTED_FILE_SIZE = 1_048_576;
void checkFileSize(long bytes) {
if (bytes > MAX_SUPPORTED_FILE_SIZE) {
throw new IllegalArgumentException("too big");
}
}
配置检查:
hashCode()
方法中禁用此检查。Collection
、Map
、StringBuilder
或 StringBuffer
对象时,使用忽略 StringBuilders 和 Collections 的初始容量选项可以忽略用作初始容量的幻数。