V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhanggg
V2EX  ›  问与答

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

  •  
  •   zhanggg · Sep 4, 2019 · 8228 views
    This topic created in 2427 days ago, the information mentioned may be changed or developed.

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

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

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

    其实问题换个问法就是,Java 大量用动态代理的代码里,怎么在静态环境下快速找到我的代码的调用栈
    STRRL
        4
    STRRL  
       Sep 4, 2019
    @zhanggg 如果范围缩小到 Spring 的话,一方面是熟读 Spring 和 Spring boot 文档,熟悉那些注解是怎么实现的。比如说 ConfigurationProperties, EnableXXXX, 这些东西一定要看文档再看源码. 另一方面, 如果是写了个 SpEL 里有注解的切面,IDEA 能帮你把那个注解也标出来,usage 也能看到.
    zhanggg
        5
    zhanggg  
    OP
       Sep 5, 2019
    @STRRL Spring 比较好处理,谷歌结合 idea 大概位置都能找到,一些冷门包看的我头疼
    amwyyyy
        6
    amwyyyy  
       Sep 5, 2019
    不是知名的注解,网上搜索不到的。就下源码,全文搜索 getAnnotation(NotNull.class),通常都能找到。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6185 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 02:18 · PVG 10:18 · LAX 19:18 · JFK 22:18
    ♥ Do have faith in what you're doing.