??常量對象中聲明并賦值的正確寫法一:
public class RoleConstant {public static final List<String> PROBLEM_VIEW_ALL_DATA = new ArrayList<String>() {{add("角色1");add("角色2");add("角色3");}};}
?常量對象中聲明并賦值的正確寫法二:
public class RoleConstant {public static final List<String> PROBLEM_VIEW_ALL_DATA = new ArrayList<String>();static{PROBLEM_VIEW_ALL_DATA.add("角色1");PROBLEM_VIEW_ALL_DATA.add("角色2");PROBLEM_VIEW_ALL_DATA.add("角色3");}
}
常量對象中聲明并賦值的正確寫法三:
public class RoleConstant {public static final List<String> PROBLEM_VIEW_ALL_DATA = Arrays.asList("角色1", "角色2","角色3");
}
service方法中先聲明再賦值,不加static也能正常賦值
@Service
public class ProblemEntEvaluateServiceImpl extendsServiceImpl<ProblemEntEvaluateMapper, ProblemEntEvaluate> implementsProblemEntEvaluateService{private static final List<String> ENT_EVALUATE_SATISFACTION_LIST = new ArrayList<>();{ENT_EVALUATE_SATISFACTION_LIST.add("satisfied");ENT_EVALUATE_SATISFACTION_LIST.add("very_satisfied");ENT_EVALUATE_SATISFACTION_LIST.add("basically_satisfied");}
}
問題重現,參考service實現類中的寫法在常量對象中使用,在程序運行時發現變量為null
錯誤寫法:
public class RoleConstant {public static final List<String> PROBLEM_VIEW_ALL_DATA = new ArrayList<String>();{PROBLEM_VIEW_ALL_DATA.add("角色1");PROBLEM_VIEW_ALL_DATA.add("角色2");PROBLEM_VIEW_ALL_DATA.add("角色3");}
}
程序運行效果:
出現上述問題,是語法不規范導致的...
常量對象中聲明再賦值也是可以正常讀取到的,在賦值時少了static{}