【发布时间】:2018-07-23 06:08:22
【问题描述】:
我正在学习 Kotlin。
我开发了一个基于注释处理的 Java 库。该库在 Java 上完美运行。我的库包含用户可以放在类字段上的注释。但该字段不应为 private 或 static 以便处理该字段。
@MyAnnotation
private String userName;
这将引发编译时错误,建议用户删除private 修饰符以由我的库的注释处理器处理。
一旦用户删除private,它就可以工作了。
现在以 Kotlin 为例
@MyAnnotation
var spUserName : String? = null
这正在生成如下所示的私有字段。
...
private java.lang.String spUserName;
...
所以我的注释处理器抛出了编译时错误。
在网上搜索后,在该字段上添加@JvmField 可以正常工作,如下所示。
@JvmField
@MyAnnotation
var spUserName : String? = null
但我不希望我的用户在我的注释上方再添加一个注释。如果有这么多字段,它会增加代码。
请建议任何其他替代方案以避免@JvmField。
所以我的问题是:如何在不使用 @JvmField 的情况下使我的字段在 Kotlin 中成为非私有字段?
【问题讨论】:
标签: java android kotlin annotations