如何为 avro idl 文件上的 @javaAnnotation 提供参数?

How to supply argument to a @javaAnnotation on an avro idl file?

我正在尝试向我的 avro idl 文件(avdl 文件)添加 java 注释。而且我似乎无法弄清楚如何为注释提供参数。这是一个简化的例子

protocol Message {
    record Message {
        int @javaAnnotation("java.lang.SuppressWarnings") myInt = 0;
    }
}

当我尝试编译这个时,我得到

error: annotation @SuppressWarnings is missing a default value for the element 'value'
@java.lang.SuppressWarnings
  ^
1 error

但我确实没有看到任何允许我传递参数的语法。这是添加此功能的工单https://issues.apache.org/jira/browse/AVRO-1186,供参考

我正在使用 avro 版本 1.8.2 并使用 gradle-avro 插件版本 0.12.0

任何人都可以提供一些见解,将不胜感激。

您可以按原样编写注释,转义双引号:

protocol Message {
    record Message {
        int @javaAnnotation("java.lang.SuppressWarnings(\"unused\")") myInt = 0;
    }
}

Avro 编译器不会删除注释名称。