final 字段没有初始化,那么通常 Java 编译器不允许你有一个无参数的构造函数?

final 字段没有初始化,那么通常 Java 编译器不允许你有一个无参数的构造函数?

在Java中,如果一个类的字段被声明为final,那么它必须在声明时或者在构造方法中初始化。这是因为final字段的值在初始化之后不能被修改,所以如果没有在声明时或构造方法中赋值,编译器就无法保证这个final字段会被正确地初始化。

因此,如果一个类有一个或多个final字段,并且这些字段没有在声明时或构造方法中初始化,那么Java编译器将不允许这个类拥有无参数的构造函数,因为它无法确保final字段的初始化。

但是,请注意,如果你使用了Lombok的@NoArgsConstructor(force = true)注解,并且类中有未初始化的final字段,Lombok可能会尝试生成一个无参数的构造函数,但是final字段没有被初始化,这可能会导致运行时错误,通常不建议这样做。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值