• 请不要在回答技术问题时复制粘贴 AI 生成的内容
purensong
V2EX  ›  程序员

Java 程序员进来回答一下

  •  
  •   purensong · Mar 13, 2020 · 4118 views
    This topic created in 2435 days ago, the information mentioned may be changed or developed.

    做 java 的一般都用过 lombok,而对 lombok 的原理想必知道的也清楚是通过 javac API 实现。我想知道还有什么类似的开源工具会用到 javac API,编译的时候去做的事,什么样的项目会有涉及,想深入学习一下。 至少我开发这些年还没深入研究过编译 ,语法解析,感觉挺神秘的。因为单靠一个注解就帮你在编译的时候塞进了很多代码。

    24 replies  •  2020-03-17 18:27:33 +08:00
    zhuawadao
    zhuawadao
    Mar 13, 2020❤️1
    1
    我寻思你这也都是陈述句啊。
    wysnylc
    wysnylc
    Mar 13, 2020
    2
    抱歉,没用过 lombok
    luckylo
    luckylo
    Mar 13, 2020 via Android
    3
    map struct 貌似是这么写的吧
    bbao
    bbao
    Mar 13, 2020
    4
    抱歉,都没听过 lombok,不知道是啥
    guili618
    guili618
    Mar 13, 2020
    5
    建议你看下这个帖子 https://www.iteye.com/topic/517796,你就明白大神是怎么干的了,
    这位哥们后来去了淘宝开发 TDDL,后来离职自己出来一个人写了个数据库
    luckylo
    luckylo
    Mar 13, 2020 via Android
    6
    @luckylo 我貌似
    luckylo
    luckylo
    Mar 13, 2020 via Android
    7
    @luckylo 弄错了
    Jooooooooo
    Jooooooooo
    Mar 13, 2020
    8
    不如直接深入学习 java 虚拟机
    guili618
    guili618
    Mar 13, 2020
    9
    https://www.iteye.com/topic/517796

    我佛了,V2 咋连编辑都不让……
    hdbzsgm
    hdbzsgm
    Mar 13, 2020
    10
    有些人的 ide 可以自动生成 getter setter 什么的 lombok 没处用
    Cbdy
    Cbdy
    Mar 13, 2020 via Android
    11
    举几个例子
    静态代码分析,如:findbugs、spotbugs
    编译期依赖注入,如:dagger
    代码生成工具,如:vertx-codegen
    WayneCmd
    WayneCmd
    Mar 13, 2020
    12
    cglib 动态代理可以研究一下
    beidounanxizi
    beidounanxizi
    Mar 13, 2020
    13
    这玩意 没啥好研究的 不得不说 反射 被某些脑残 Java 开发拿来作为技术现象很普遍一直是我最讨厌 Java 的点,
    chashao
    chashao
    Mar 13, 2020 via iPhone
    14
    我 c#程序员进来看看
    guyeu
    guyeu
    Mar 13, 2020
    15
    annotation processor 用得很广泛了,lombok 实际上也是 hack 了一些东西。。类似功能的还有 Autovalue 之类一大堆工具( java 程序员为了少写代码做了很多工作)。。

    仅仅是用到 javac 的 api 的话,阿里的 arthas 基本上算是个百科全书了。。
    find
    find
    Mar 13, 2020 via iPhone
    16
    这个 是 JSR 269 规范里面 plugin annotate process api,我觉得楼主不适合做程序员,这么简单的事情 关键查找一下就知道了,需要在这里问?
    chendy
    chendy
    Mar 13, 2020
    17
    直接搜 annotation processor 就是了
    purensong
    purensong
    OP
    Mar 16, 2020
    19
    @find 嗯嗯,多谢提醒,我有点不爱看文献,想过来和 v 友聊几句,没想到秀智商了。。
    purensong
    purensong
    OP
    Mar 16, 2020
    20
    @zhuawadao 不是啊,我第二句不是问 我想知道...,我表达的不够好吧,其实就是过来问问大家有没有类似的开源代码可以学习,发散一下自己的思维,忘了提阿里的阿尔萨斯,罪过罪过。
    purensong
    purensong
    OP
    Mar 16, 2020
    21
    @beidounanxizi 这个好像不是反射吧
    purensong
    purensong
    OP
    Mar 16, 2020
    22
    @hdbzsgm 是的,程序员虽然工作只要会用就行,但是有时还是好奇它是怎么做的,有没有类似的场景思路,以后遇到问题多一条路选择也是好的
    beidounanxizi
    beidounanxizi
    Mar 17, 2020
    23
    @purensong annotation processor 楼上说了 这个东西嘛 刚开始还有点好奇 其实就是那么回事啊 注解么 还能有啥
    Chinsung
    Chinsung
    Mar 17, 2020❤️1
    24
    这个东西凑巧研究过,lombok 本质上还是 annotation processor,只不过他本身封装的比较有水平,对相关 api 也有一定具有深度的探索,把原生提供的语法树节点封装成了自己的一套。不过 lombok 对语法树的很多操作比较有借鉴性,查文档不如看源码。
    至于类似的原理,主要看下 META-INF 里的 javax.annotation.processing.Processor,有这个的都是带这个原理的。
    主要还是切面和代理的框架使用的多,比如切面框架,dubbo。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2660 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 04:21 · PVG 12:21 · LAX 20:21 · JFK 23:21
    ♥ Do have faith in what you're doing.