class CourseNature{ public static final CourseNature REQUIRED_COURSE = getCourseNature("required course"); public static final CourseNature OPTIONAL_COURSE = getCourseNature("optional course"); private static final ArrayList<CourseNature> createdCourseNature = new ArrayList<CourseNature>(); private String type; private CourseNature(String type){ this.type = type; } public static CourseNature getCourseNature(String type){ for(CourseNature courseNature : createdCourseNature){ if(courseNature.getType().equals(type)){ return courseNature; } } CourseNature newCourseNature = new CourseNature(type); createdCourseNature.add(newCourseNature); return newCourseNature; } public String getType() { return type; } }这里面为什么createdCourseNature变量无法被正常初始化
时间: 2023-10-06 08:09:11 浏览: 42
在这段代码中,变量`createdCourseNature`是在类定义中被声明的,但是没有被初始化。因为它是一个静态变量,所以可以使用静态代码块来对它进行初始化,如下所示:
```
private static final ArrayList<CourseNature> createdCourseNature = new ArrayList<CourseNature>();
static {
// 在静态代码块中对 createdCourseNature 进行初始化
CourseNature.REQUIRED_COURSE;
CourseNature.OPTIONAL_COURSE;
}
```
在静态代码块中调用静态变量 `CourseNature.REQUIRED_COURSE` 和 `CourseNature.OPTIONAL_COURSE`,这样就可以保证 `createdCourseNature` 在使用之前已经被初始化了。
阅读全文