问题:请问“错误代码”中,为什么“private final IExpResConfigService iExpResConfigService;”在IDEA中会有红色下划线?但是去掉了final之后红色下划线又消失了?
正确代码
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/experiment-management/resConfig")
public class ExpResConfigController extends BaseController {
private final IExpResConfigService iExpResConfigService;
/**
* 查询实验资源配置列表
*/
错误代码
@RestController
public class webssh {
@Autowired
private publicUtils PublicUtils;
private final IExpResConfigService iExpResConfigService;
final 要求初始化是需要赋值,你正确的代码有 @RequiredArgsConstructor 这个lombok注解,它会创建带参数的构造方法,能保证这个实例ExpResConfigController 初始化的时候传入了final的对象,所以可以用final
final表示只读的
一个只读对象你不给它赋初值,那后续就没法对它赋值了呀
一个final对象不赋值就等于白定义了
final不可变
要么创建对象时声明
要么构造函数里面赋值