V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhanggg
V2EX  ›  问与答

如何快速找到 Java 中某个功能注解的实现代码

  •  
  •   zhanggg · 2019-09-04 20:11:19 +08:00 · 7701 次点击
    这是一个创建于 1932 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如很常见的用于判断非空的注解 @NotNull, 在写某些参数校验的时候经常会用到这个。

    那我该怎么去找到这个注解的判空逻辑是怎么写?或者说@NotNull这个注解的实现逻辑,我该怎么去定位到它?

    6 条回复    2019-09-05 11:23:39 +08:00
    Atsushi
        1
    Atsushi  
       2019-09-04 20:20:49 +08:00 via Android
    你要如何知道你写的类在哪个地方被用反射机制加载,一个道理
    STRRL
        2
    STRRL  
       2019-09-04 20:26:50 +08:00
    暂时没有好方法,IDE 里翻 usage 或者翻这个注解的文档。
    zhanggg
        3
    zhanggg  
    OP
       2019-09-04 20:31:58 +08:00
    @Atsushi 嗯,现在就是想怎么快速找到这个注解的反射代码
    @STRRL IDE 其实有点苦难,特别是找 Spring 的注解实现代码。现在看来也只能找文档比较容易了

    其实问题换个问法就是,Java 大量用动态代理的代码里,怎么在静态环境下快速找到我的代码的调用栈
    STRRL
        4
    STRRL  
       2019-09-04 20:39:16 +08:00
    @zhanggg 如果范围缩小到 Spring 的话,一方面是熟读 Spring 和 Spring boot 文档,熟悉那些注解是怎么实现的。比如说 ConfigurationProperties, EnableXXXX, 这些东西一定要看文档再看源码. 另一方面, 如果是写了个 SpEL 里有注解的切面,IDEA 能帮你把那个注解也标出来,usage 也能看到.
    zhanggg
        5
    zhanggg  
    OP
       2019-09-05 09:24:44 +08:00
    @STRRL Spring 比较好处理,谷歌结合 idea 大概位置都能找到,一些冷门包看的我头疼
    amwyyyy
        6
    amwyyyy  
       2019-09-05 11:23:39 +08:00
    不是知名的注解,网上搜索不到的。就下源码,全文搜索 getAnnotation(NotNull.class),通常都能找到。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1213 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 17:58 · PVG 01:58 · LAX 09:58 · JFK 12:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.