V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
persona5
V2EX  ›  程序员

使用 lombok 时,两个字段(testName、testname)只生成了一组 getter/setter

  •  
  •   persona5 · 2020-09-16 09:27:15 +08:00 · 2896 次点击
    这是一个创建于 1511 天前的主题,其中的信息可能已经有所发展或是发生改变。

    TestEntity.java

    @NoArgsConstructor
    @Data
    public class TestEntity {
    
        private String testName;
        private String testname;
    }
    

    TestEntity.class

    public class TestEntity {
        private String testName;
        private String testname;
    
        public TestEntity() {
        }
    
        public String getTestName() {
            return this.testName;
        }
    
        public void setTestName(final String testName) {
            this.testName = testName;
        }
    
        ...
    }
    

    请问这是什么原因?

    第 1 条附言  ·  2020-09-16 10:12:39 +08:00
    1. lombok 1.18.12 ,JDK 11, IDEA 2020.2.1, 最新版本插件

    2. 不是我写的,旧项目要修改,拿出来编译的时候发现的。

    3. 能看出来八成是命名问题,但是想知道具体的原因,所以来问问。
    第 2 条附言  ·  2020-09-16 11:00:01 +08:00
    https://github.com/rzwitserloot/lombok/issues/2130

    https://projectlombok.org/features/GetterSetter

    No method is generated if any method already exists with the same name (case insensitive) and same parameter count.
    21 条回复    2020-09-16 17:59:47 +08:00
    0x663
        1
    0x663  
       2020-09-16 09:55:46 +08:00
    0x663
        2
    0x663  
       2020-09-16 09:57:29 +08:00
    左转 issues
    li517316684
        3
    li517316684  
       2020-09-16 09:57:44 +08:00
    没导对包吧
    hejawy
        4
    hejawy  
       2020-09-16 10:01:10 +08:00
    为啥要这么命名?没事找事?
    persona5
        5
    persona5  
    OP
       2020-09-16 10:07:58 +08:00
    @li517316684 导包正确,不是 import 错误的问题


    @hejawy 不是我写的,旧项目要修改,拿出来编译的时候发现的
    dovme
        6
    dovme  
       2020-09-16 10:08:13 +08:00
    你这么命名真的会被人打死的
    Kilerd
        7
    Kilerd  
       2020-09-16 10:08:20 +08:00
    项目上用 lombok 1.18.12 没有出现这个问题,可以正常提示。 请贴出你的 lombok 版本。
    Qlccks2
        8
    Qlccks2  
       2020-09-16 10:10:34 +08:00
    看来你自己知道命名有问题了
    persona5
        9
    persona5  
    OP
       2020-09-16 10:10:42 +08:00
    @Kilerd lombok 版本相同,JDK 11, IDEA 2020.2.1, 最新版本插件
    hejawy
        10
    hejawy  
       2020-09-16 10:12:36 +08:00
    @persona5 重构它!
    persona5
        11
    persona5  
    OP
       2020-09-16 10:16:55 +08:00
    @Kilerd 是的,IDE 中可以正常提示,但是不能通过编译。
    talen666
        12
    talen666  
       2020-09-16 10:17:51 +08:00
    会不会 testname 没有用到。。
    Jrue0011
        13
    Jrue0011  
       2020-09-16 10:31:50 +08:00
    用 delombok 看看生成的代码
    serical
        14
    serical  
       2020-09-16 10:51:05 +08:00   ❤️ 1
    persona5
        15
    persona5  
    OP
       2020-09-16 10:58:41 +08:00
    @serical 感谢
    22k
        16
    22k  
       2020-09-16 11:46:44 +08:00
    是不是驼峰名字然后认为了一个字段
    graffitist
        17
    graffitist  
       2020-09-16 12:22:24 +08:00
    按道理来说,就算你命名成这个样子
    也会有两个吧?
    getTestName
    getTestname

    没注意过
    flowercoder
        18
    flowercoder  
       2020-09-16 13:16:16 +08:00
    早就吃过 lombok 大小写的亏了
    getset 用插件生成一下难道不香吗?
    要么就全小写避免呗。
    Jooooooooo
        19
    Jooooooooo  
       2020-09-16 14:36:18 +08:00
    (又一个不要用 lombok 的例子

    你用 idea 的自动生成 get set, 不会有问题
    shuqin2333
        20
    shuqin2333  
       2020-09-16 16:25:16 +08:00
    吃过类似的亏
    aName
    生成的 get set 是 getAName 和 setAName
    手动用 idea 生成的是 getaName 和 setaName,lombok 生成的 get set 反射会有问题
    CantSee
        21
    CantSee  
       2020-09-16 17:59:47 +08:00
    1.18.0 复现
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3116 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:51 · PVG 21:51 · LAX 05:51 · JFK 08:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.