- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的annotation processor其应用如下:
@DiffElement(diffReceiver = Renderer.class)
class ViewState {
String getHello();
int getWorld();
}
class Renderer {
void renderHello(String hello);
void renderWorld(int world);
}
要使该处理器正常工作,get
函数的名称和 Renderer
接口(interface)函数参数的名称必须匹配。它会检查这一点,并使用注释的参数来查看提供的类并基于该类进行一些代码生成。
它生成一个文件。
我已阅读 Incremental annotation processing 上的文档我无法决定该处理器适用于哪个类别。以下是我的考虑:
隔离
,因为它不会从带注释元素的 AST 派生所有内容,因为它还从注释参数检查类聚合
,因为它在Renderer
类上没有任何注释,所以根据上面的文档,处理器不会在任何时候被调用Renderer
类发生变化,因为处理器尚未注册来处理此文件,因此这将导致生成结果出错。问题:
最佳答案
Do I understand documentation correctly? Or can some category still be applied to this processor
有关处理器类别的文档非常简短,而且在我看来,缺乏示例。我花了很多时间来弄清楚这些文档,构建一些简单的实验项目。因此,据我所知,如果我最终正确地弄清楚了它们,就可以应用一个类别:)
你说的是
it can't be isolating, because it doesn't derive everything from annotated element's AST, as it also inspects a class from annotation argument
这并不完全正确,我将解释原因。正如 documentation 中提到的,隔离处理器
must make all decisions (code generation, validation messages) for an annotated type based on information reachable from its AST. This means you can analyze the types' super-class, method return types, annotations etc., even transitively.
“甚至传递”短语在这里非常重要 - 它意味着,您不仅可以分析带注释类型的 AST,还可以分析其中某些方法的返回类型的 AST,然后,比方说,可以分析那种类型...
据我了解,您可以通过带注释元素的 AST 遍历发现的每种类型,都是带注释类型(或一般元素)的依赖项。如果依赖项发生更改,则依赖类型需要重新编译。因此,当 Renderer
类发生更改时,ViewState
将被重新编译,从而重新处理,因为它引用 Renderer
作为其注释参数。父类(super class)型、超接口(interface)、方法的返回类型、方法参数的类型、注释类参数……所有这些都被视为依赖类型。
因此,您的注释处理器实际上可以隔离。
<小时/>P.S.如果隔离不起作用,请确保注释保留为 CLASS
或更高级别,无论出于何种原因。
P.P.S.我发现注释处理中的增量是一个非常阴暗的话题,充满了惊喜和水下岩石。我自己发现的经验法则是,几乎每个经过一些调整的处理器都可以隔离,除非它确实需要基于许多输入生成一个实体。而且,重要的是,只有这些输入在引用方面彼此完全无关,甚至位于不同的库中。
关于java - 当处理器依赖于注释值中的类时,选择 Gradle 增量注释处理器类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57862147/
所以`MKAnnotation's。有趣的东西。 我的问题: 注释的标题和副标题有什么区别?这对注释的视觉组件有何影响? MKPinAnnotationView 和 MKAnnotationView
我正在使用 JBoss 工具将 DB 模式反向工程到 POJO 中。具体来说,我在 hibernatetool ANT 任务中使用了 hbm2java 选项。在 hbm2java 选项下,您可以指定
假设我有这段文字: cat file /* comment */ not a comment /* another comment */ /* delete this * /* multiline
我明白,如果你///在类、字段、方法或属性上方 Visual Studio 将开始为您建立 XML 样式的注释。 但是,我在哪里可以为我的命名空间和/或库添加 XML 注释... 例如: .NET F
int API_VERSION = 21; @TargetApi(API_VERSION)在Android中用于指定该方法/类支持API_VERSION及以下。 我们是否可以镜像类似的东西,指定仅支持
Closed. This question needs to be more focused。它当前不接受答案。
假设我有一个界面如下。 public interface MyInterface{ /** * This method prints hello */ void sayHello();
我已将 Jboss 应用程序迁移到 WebSphere Liberty。我必须删除所有 Jboss 引用库。在这样做的同时,我在某些注释中面临问题。 Jboss 应用程序使用 @SecurityDom
在本教程中,您将了解 JavaScript 注释,为什么要使用它们以及在示例的帮助下如何使用它们。 JavaScript 注释是程序员可以添加的提示,以使代码更易于阅读和理解。JavaScri
我正在建立一个博客,为了发表评论,我有这个 CSS。 #comments { position:absolute; border: 1px solid #900; border-width: 1
我正在尝试在单元格中插入评论。我正在尝试按照代码进行评论,但它没有在创建的 excel 中显示评论。我正在创建 .xls 扩展名。 $objPHPExcel->getActiveSheet()->ge
我正在使用 TS 在 MarionetteJS 上编写项目,我想使用注释来注册路由。例如: @Controller class SomeController { @RouteMapping("so
我有一个应用程序可以在页面上生成大量注释。用户可以单击页面上的任意位置以创建快速注释(例如 Acrobat Pro)可以在一般 中使用一些 javascript 行添加和删除这些注释
是否有 JavaScript 注释? 当然 JavaScript 没有它们,但是是否有额外的库或建议的语言扩展,例如 @type {folder.otherjsmodule.foo} function
Java 中注解的目的是什么?我有一个模糊的想法,认为它们介于注释和实际代码之间。它们在运行时会影响程序吗? 它们的典型用法是什么? 它们是 Java 独有的吗?有 C++ 等价物吗? 最佳答案 注解
其实我们在 Ruby 基础语法 已经比较详细的介绍了 Ruby 语言中的注释 Ruby 解释器会忽略注释语句 注释会对 Ruby 解释器隐藏一行,或者一行的一部分,或者若干行。 Ruby 中的注
我正在 try catch VBA 注释。到目前为止,我有以下内容 '[^";]+\Z 它捕获以单引号开头但在字符串结尾之前不包含任何双引号的任何内容。即它不会匹配双引号字符串中的单引号。 dim s
有没有办法在'svn commit'上将提交注释添加到更改的文件中。有人告诉我有一种方法可以用 cvs 做到这一点,但我们使用 svn。目前,我们使用“$Revision”关键字将修订号添加到更改的文
我正在尝试通过 ManyToMany 注释自动对报告的结果进行排序 @OrderBy : /** * @ORM\ManyToMany(targetEntity="Artist", inversedB
我正在使用 JBoss 5 GA,我创建了一个测试 session bean 和本地接口(interface)。我创建了一个 servlet 客户端。我尝试使用 @EJB 将接口(interface)
我是一名优秀的程序员,十分优秀!