lombok.Getter cheated me

这篇具有很好参考价值的文章主要介绍了lombok.Getter cheated me。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

interface Doable {
    Integer getCode();
}

@lombok.Getter
class DerivedClass implements Doable {
    int code;
}

错误信息:

Error:(11, 5) java: DerivedClass不是抽象的, 并且未覆盖Doable中的抽象方法getCode()
Error:(13, 13) java: DerivedClass中的getCode()无法实现Doable中的getCode()
返回类型int与java.lang.Integer不兼容


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

interface Doable {
    Integer getCode();
}
class DerivedClass implements Doable {

    @Override
    public int getCode() {
        return 1;
    }
}

 文章来源地址https://www.toymoban.com/news/detail-445435.html

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

interface Doable {
    Number getCode();
}
class DerivedClass implements Doable {

    @Override
    public Integer getCode() {
        return 1;
    }
}

 

 

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

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

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

    private Integer code;
    private String description;

}

Jenkins错误截图

lombok.Getter cheated me

 

到了这里,关于lombok.Getter cheated me的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Lombok导致代码单元测试覆盖率崩塌

    Lombok 由于其使用的便利性, 目前流传非常广泛。甚至有呼声希望其能被Java官方引入,成为JDK的一部分。 当然凡事都有两面性,Lombok的引入也是有代价的。一时注释一时爽,结果导致代码在不知不觉中翻了好几倍。 例如以下几个简单的注解,背后是N多个自动生成的方法: @Da

    2024年02月07日
    浏览(44)
  • 【解决】uniapp使用video标签在浏览器调试正常,安卓真机、手机上显示小黑块,无法正常显示

    【问题】 uniapp中使用video标签展示视频,在浏览器展示正常,但是运行到安卓真机、或者手机上显示小黑块,无法正常显示 示例代码如下: 展示效果如下: 【解决】 不在 template 标签内直接使用 video 标签,而是使用 v-html 渲染html元素,绑定一个videoHtm方法,返回需要的html元

    2024年02月04日
    浏览(168)
  • python - 无法正常显示xlabel / ylabel

    如上述所示, 第一个子图是不带投影的,可以正常显示横纵轴标签和标题 第二个子图带有投影,横纵轴通过手动设置范围,可以正常显示横纵轴标签和标题 第三个子图带有投影,横纵轴的tick label通过gridlines设置,但是添加label之后却无法正常显示 不知道具体是什么原因很奇

    2024年01月18日
    浏览(37)
  • IDEA2021.1.3版本lombok插件--代码爆红问题解决

      最近,突然心血来潮将自己工作中开发使用的idea升级到2021.1.3版本,安装成功后,打开代码发现 有关get、set方法全部爆红 ,不用想,肯定是 Lombok插件问题 ,通过setting-plugin里面搜索Lombok居然不存在,再一看原来是该版本idea自带Lombok插件,与当前环境不适配。    但是

    2024年02月08日
    浏览(61)
  • 【uniapp】顶部和底部导航栏无法正常显示

    关于顶部导航栏不显示的问题: 顶部导航栏在配置了 navigationBarTitleText 还是无法显示,如果是使用他人的项目结构,需要检查是否已经被配置了自定义导航栏: \\\"navigationStyle\\\": \\\"custom\\\" 关于底部导航栏不显示的问题: 如果在配置了 tabBar 之后仍然不显示,需要检查 list 中的 pa

    2024年02月06日
    浏览(49)
  • Unity 在web上材质显示正常,但是unity端材质显示为紫色

    Addressable打包后的物体,在web端显示正常,但是在unity端材质就显示紫色 和windows端的图形API有关 Player Setting中进行设置 选择windows端 取消Auto Graphics API for Windows的勾选 在Graphics APIs for Windows中追加OpenGLES3并置顶 上面第三步中,一定要记得把OpenGLES3置顶,然后会自动重启编辑器

    2024年02月11日
    浏览(42)
  • Unity UI设计 Text文本无法正常显示

    Unity UI设计 Text文本无法正常显示 如下图, 笔者已在Text文本框中设置文本为10, 但是Text文本框并没有显示 适当拉大Text文本框或缩小Text文本字体大小 对于笔者而言, 由于Text文本框较小, Text文本字体较大,导致Text文本字体无法正常显示。 当然,读者所遇到的情况可能与笔

    2024年02月16日
    浏览(48)
  • win10能够正常访问网站、ip正常ping通,但是ping域名显示”请求找不到主机......“

    在使用wireshark分析数据包的时候,想要通过ping命令查看域名的ip,从而方便对数据包进行合理的过滤的时候,发现ping域名显示”请求找不到主机…“,nslookup可以正常解析域名,并且解析的域名正确指向百度网址 通过在线查找其它人的解决思路,概括来说,大致如下 (1)一

    2024年02月05日
    浏览(51)
  • 新建文件没有word、ppt、excel,office图标显示为白色,不能正常显示

    解决办法: 1、按“win+R”输入“regedit”运行,打开系统注册表; 2、找到HKEY_CLASSES_ROOT下的.doc、.docx、.ppt、.pptx、.xls、.xlsx,删除。 3、找到HKEY_CLASSES_ROOT下的 Word.Document.8、Word.Document.12、PowerPoint.Show.8、PowerPoint.Show.12、Excel.Sheet.8、Excel.Sheet.12,删除。 4、找到HKEY_CURRENT_USERSo

    2024年02月16日
    浏览(59)
  • outlook状态栏显示已断开或者显示感叹号,重启Outlook无法正常连接

    故障描述: outlook状态栏显示已断开或者显示感叹号,重启Outlook无法正常连接 解决方法: 1、关闭Outlook 关闭Outlook。检查任务栏图标是否有关闭。如果没有请在任务管理器强制结束 管理器结束进程:鼠标点击任务栏空白处→鼠标右键→任务管理器→鼠标点击Microsoft Outlook→右

    2024年02月16日
    浏览(123)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包