记一个Java static块的位置引发的问题
【摘要】 最近用idea格式化一个开源代码时碰到这样个问题,static块放到KEY_HASH_TABLE,KEY_BLOCK_TABLE之后之后就不会被调用,其中HashString函数依赖CRYPT_TABLE,也就决定了这段static块需要放到这两个变量定义前;这种隐式的书写顺序的要求确实有些隐蔽,感觉最好优化掉这种书写依赖;private static final int[] CRYPT_T...
最近用idea格式化一个开源代码时碰到这样个问题,static块放到KEY_HASH_TABLE,KEY_BLOCK_TABLE之后之后就不会被调用,其中HashString函数依赖CRYPT_TABLE,也就决定了这段static块需要放到这两个变量定义前;这种隐式的书写顺序的要求确实有些隐蔽,感觉最好优化掉这种书写依赖;
private static final int[] CRYPT_TABLE = new int[0x500];
static {
int seed = 0x00100001;
for (int index1 = 0; index1 < 0x100; index1++) {
for (int index2 = index1, i = 0; i < 5; i++, index2 += 0x100) {
seed = ((seed * 125) + 3) % 0x2AAAAB;
final int temp1 = (seed & 0xFFFF) << 0x10;
seed = ((seed * 125) + 3) % 0x2AAAAB;
final int temp2 = (seed & 0xFFFF);
CRYPT_TABLE[index2] = (temp1 | temp2);
}
}
}
// cached hashes
public static final int KEY_HASH_TABLE = HashString("(hash table)", MPQ_HASH_FILE_KEY);
public static final int KEY_BLOCK_TABLE = HashString("(block table)", MPQ_HASH_FILE_KEY);
``
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)