在开发过程中一般都是先声明赋值后再使用,存在这种场景,多个静态常量共存并且常量之间有依赖,在编译的时候如果顺序不正确也能编译通过。
示例如下:
-- 常量1
private static final Set<Integer> NEED_TRANSFER_TO_AWARD_RECORD_SET = new HashSet<>() {{
add(COIN.getCode());
addAll(ISSUING_COUPONS_PRIZE_CODE_LIST);
}};
-- 常量2
public static final Set<Integer> ISSUING_COUPONS_PRIZE_CODE_LIST = ISSUING_COUPONS_PRIZE_SET.stream().map(ApPrizeTypeEnum::getCode).collect(Collectors.toSet());
- 常量1 依赖常量2的数据,编写顺序为 常量1 、 常量2 编译是不会报错的,但是在执行的时候,addAll 这里会报空指针