首页 >> 大全

lombok.Getter cheated me

2024-01-02 大全 26 作者:考证青年

下面这段代码,IDE里正常显示。不过,在build时,会报错。

interface Doable {Integer getCode();
}@lombok.Getter
class DerivedClass implements Doable {int code;
}

错误信息:

Error:(11, 5) java: 不是抽象的, 并且未覆盖中的抽象方法()

Error:(13, 13) java: 中的()无法实现中的()

_lombok.Getter cheated me_lombok.Getter cheated me

返回类型int与java.lang.不兼容

下面代码,IDE直接在int上标红线,提示错误:'()' in '' with '()' in ''; to use type

interface Doable {Integer getCode();
}
class DerivedClass implements Doable {@Overridepublic int getCode() {return 1;}
}

关于OOP中的方法覆写,遵从“一大两小”原则。其中“两小”中的一个“小”是派生类的返回值类型应≤父类。就是说,下面代码是没有问题的。

interface Doable {Number getCode();
}
class DerivedClass implements Doable {@Overridepublic Integer getCode() {return 1;}
}

lombok.Getter cheated me_lombok.Getter cheated me_

关于的@注解。首先要知道,我们熟知的,分为工具和插件(IDEA插件: )。工具在代码编译期为类生成相应的方法代码,插件是为类IDE增强类里的方法,就是说,为类生成相关方法签名(就像我们人肉为类添加的方法那样,只不过插件是自动生成的),并告诉IDE。像上面的案例中,IDEA就检测到类中有方法,所以不会给出错误提示。而在编译期,工具为生成了int 方法,这时,IDEA编译器发现因不符合java覆写原则而报错。

之所以分享这个知识点,则源自昨天的一段代码。 我在项目中新增了一个枚举类,见下面代码,其中的中有T ();方法。自然是想不到会有什么问题。结果在部署到测试环境时,构建时出现如下maven error。

/**** T_Plat_order表IN_TYPE枚举--用来标记交易来源 (API/客户提交/运营提交)* @author zhangguozhan* 2023-5-15 17:46:02*/
@Getter
@AllArgsConstructor
@EnumGetByCode
public enum PlatOrderInTypeEnum implements EnumAbility {API(1, "结算接口提交"),MERCHANT(0, "结算后台提交"),BOSS(2, "运营后台导入");private Integer code;private String description;}

错误截图

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了