美文网首页
Kotlin With Lombok Problems

Kotlin With Lombok Problems

作者: hcjcch | 来源:发表于2017-12-21 23:49 被阅读0次

Question

在使用Kotlin之前,我们曾经大量使用Lombok用来减少模版代码的编写,在Kotlin成名之后,我们迫不及待的切换到Kotlin下开发,但是Lombok却带来了不太友好的历史问题。

图1.png
AppUserJava.java
@Getter
public class AppUserJava {
    private String name;
    private int age;

    public AppUserJava(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

Kotlin调用

fun main(args: Array<String>) {
    val b: AppUserJava = AppUserJava("liying", 24)
    println(b.age)
}

一看没有问题啊,有了@Getter标签,Lombok会帮我们生成所有Field的getter,然后Kotlin调用,思路没有任何问题,但是却报了图中的编译错误,为什么呢?
打印出一个正确的编译流程:

图2.png
图中的2个箭头反应了错误的发生原因,因为是先编译的kotlin,然后才编译Java,在编译Kotlin的时候,Java代码根本还没有编译,因此Lombok也没有自动生成代码,所以编译Kotlin就失败了
图3.png
如图:执行task compileKotlin失败了。

解决方案

1.再来一张图

图4
图中有4个箭头顺序依次是:library:compileKotlin,:library:compileJava,:app:compileKotlin,:app:compileJava。所以发现编译流程有这样一个规律,先编译library层的代码,再编译app层的代码,也就是library层的所有代码(Kotlin和Java)都编译完了(Lombok生成代码也执行了)才会编译app层代码。所以是不是我们把Lombok修饰的代码放到library层就ok了,事实确实是如此。但是这种解决方案不够优雅,有一些弊端,尤其是那些之前没有分层的代码很糟糕,但确实能解决我们的问题。
2.是否可以改变编译顺序呢,先编译Java后编译Kotlin?这只是一个猜测,还没有实践,看到本文有实践过的朋友欢迎留个言。

参考:
1.https://stackoverflow.com/questions/35517325/kotlin-doesnt-see-java-lombok-accessors/35530223#35530223
2https://github.com/rzwitserloot/lombok/issues/1169

相关文章

  • Kotlin With Lombok Problems

    Question 在使用Kotlin之前,我们曾经大量使用Lombok用来减少模版代码的编写,在Kotlin成名之...

  • 代码整洁之道:Lombok 的使用

    一、简介:Lombok是什么 Lombok官网:https://projectlombok.org Lombok项...

  • lombok-ex 编译时注解实现,性能完爆 AOP

    lombok-ex lombok-ex[https://github.com/houbb/lombok-ex] 是...

  • 如何使用lombok

    1、mac如何安装lombok 1、下载lombok.jar lombok官网 https://projectlo...

  • problems

    WebSocket、HTML、WebGL、客户端数据库 https://threejs.org http://ww...

  • problems

    ∮昨天演讲比赛结果出来了,不出所料。也许是准备不够充分的锅吧,或许也是思想不够深刻?被嘉宾学姐点名表扬的人,说真我...

  • Problems

    zsh报corrupt history file /home/ccsexyz/.zsh_history暴力删除之

  • problems

    i know there are so many problems in our life and anyone ...

  • problems

    1、 2、 3、 4、editding or delete address not working 5、tabba...

  • lombok

    lombok的安装以及使用 什么是lombok 有什么好处 如何使用 IntelliJ IDEA 安装lombok...

网友评论

      本文标题:Kotlin With Lombok Problems

      本文链接:https://www.haomeiwen.com/subject/nhbzwxtx.html