gpt4 book ai didi

Java,在编译时使用注释处理器索引注释类是一个好习惯吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:11:09 24 4
gpt4 key购买 nike

我正在考虑在编译时使用注释处理器构建一个用某种注释类型注释的类的索引(即使是存储在文件中的简单列表),以便在运行时加速带注释的类检索。

那么,这是一个好的做法吗?有什么缺点吗?如果它和我现在看起来一样好,为什么没有很多库可以轻松地做到这一点(我找到的唯一一个是 Class Index )?而不是运行时处理有这么多?

最佳答案

作为 ClassIndex 库的作者,我可以列出使用注释处理进行注释索引的几个优点,以及我认为阻碍其广泛采用的缺点。

优点:

  • 使用注解处理的索引基于官方的 JSR 269。另一方面,类路径扫描依赖于 Java 内部机制。众所周知,ClassLoader 没有用于检索带注释类列表的 API。但更令人惊讶的是,通用 ClassLoader 不允许列出它尝试从中加载类的文件夹和 JAR 文件。类路径扫描器假定唯一用于加载类的类加载器是 URLClassLoader,它允许使用 getURLs() method 检索源 URL 进行扫描。 .
  • 有些环境通常类路径扫描器 do not work ,在使用 Dalvik 可执行格式的 Android 上就是这种情况。
  • 恒定的运行时复杂性使得编译时索引超快。
  • Project Jigsaw 计划带来annotation detection to Java .当前的要求还建议将编译时索引作为其可行的实现。它甚至引入了与@IndexAnnotated 目的相同的@Indexed 元注释。在 ClassIndex 库中。

缺点:

  • Java 编译器和工具对 JSR 269 的支持很差。早期的 javac 版本中有几个错误。 Eclipse 的自定义 JDT 编译器有更多的错误,它不支持注释处理器的自动发现。 ClassIndex 包含许多此类问题的解决方法。
  • 类路径扫描是事实上的标准并且得到很好的支持。
  • 应用程序启动时间很少成为需要担心的瓶颈。

关于Java,在编译时使用注释处理器索引注释类是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28129327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com