当前位置: 首页 > 知识库问答 >
问题:

将参数传递给注释处理器

艾令秋
2023-03-14

我正在使用注释处理来生成一些类...我有两个模块,处理器本身和使用它的“客户端”模块。我想通过客户端向处理器传递一个参数,我可以这样做

xml prettyprint-override"><build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <generatedSourcesDirectory>${project.build.directory}/generated-sources/</generatedSourcesDirectory>
                    <annotationProcessors>
                        <annotationProcessor>org.rapster.xxx.xxx.xxComponentProcessor</annotationProcessor>
                    </annotationProcessors>
                    <compilerArgs>
                       <arg>-Awidget=something</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

如何在处理器端检索此参数?

共有2个答案

解宏扬
2023-03-14

在< code>AbstractProcessor的实现中,可以使用以下方法检索参数:

processingEnv.getOptions().get("widget");

请注意,您需要声明处理器支持的选项,或者通过使用注释< code > @ supported options({ " widget " })或者通过覆盖方法< code>public Set

陈茂
2023-03-14

您可以按如下方式获得此参数 -

processingEnvironment.getOptions().get("widget")

请注意,只有以“-A”开头的参数才能通过这种方式获得。

 类似资料:
  • 假设我有一个带有属性的注释: 我想创建一个包含多个元注释的复合注释,包括一个带有属性的注释 有没有一种方法可以将复合注释的属性传递给其中一个元注释? 例如,类似这样的东西: 这相当于,但比 谢谢! PS为我对示例注释的错误选择表示歉意-我没有javax。注射@记住命名注释,只是一些具有属性的任意注释。 谢谢大家的回答/评论。 这显然是不可能的。然而,碰巧我的案例有一个简单的解决方法,我将与大家分享

  • 问题内容: 我试图将我的数据库对象传递给我的处理程序,而不是具有全局对象。但是我不知道这是否可行,我使用的是Gorilla Mux软件包,我可以看到它把闭包作为第二个参数。 然后定义了我可以使用的参数,理想情况下,我希望拥有这样的第三个参数。 有解决方法吗?还是我需要一个全局数据库对象?我是Go的新手,所以请详细说明可能的答案。 问题答案: 欢迎来到。 可以使用全局变量,特别是数据库对象。 但是,

  • 我正在尝试创建自己的复合验证注释来验证字符串——到目前为止,它由注释@NotNull、@NotBlank和@Size组成 但是,我不想让它们保持默认值,而是希望能够传入一个参数值,例如,如果我执行@ValidString(min=1,max=50),那么@Size注释可以读取这些值——这可能吗? 我的约束-

  • 问题内容: 我正在使用Go内置的http服务器,并拍拍来响应一些URL: 我需要向该处理函数传递一个额外的参数-一个接口。 如何向处理程序函数发送额外的参数? 问题答案: 通过使用闭包,您应该能够做您想做的事情。 更改为以下内容(未测试): 然后对

  • 我在解一个有很多常数的非线性方程 我创建了一个用于解决以下问题的函数: 然后我想做: 但是正在解包并向函数传递太多参数,因此我得到: TypeError:terminalV()正好接受2个参数(给定6个) 那么,我的问题是,我是否可以通过某种方式将元组传递给调用的函数?

  • 我正在使用Spring 3.1.2。带有cglib加载时编织的RELEASE,我试图获得使用具有自定义注释和注释参数的方法的建议。 建议: 这是我正在测试的课程: 问题是我无法得到执行建议。如果我删除切入点中的@args和args条件,则会发出通知,但随后我必须深入到过程连接点(ProceedingJoinPoint)以获取所需的参数。 为什么这个建议没有生效?我做错什么了吗? 编辑:以下切入点可