Kotlin生成私有字段:@MyAnnotation字段不得为私有或静态

时间:2018-07-23 06:08:23

标签: java android kotlin annotations

我正在学习科特林。

我基于注释处理用Java开发了一个库。该库可在Java上完美运行。我的库中包含用户可以在类字段上添加的注释,但是该字段不应为privatestatic来处理该字段。

@MyAnnotation
private String userName;

这将引发编译时错误,建议用户删除要由我的库注释处理器处理的private修饰符。

一旦用户删除了private,它就会起作用。

现在是科特林的情况

@MyAnnotation
var spUserName : String? = null

这将生成如下所示的私有字段。

... private java.lang.String spUserName; ... 所以我的注释处理器抛出了编译时错误。

在网络上搜索后,在该字段上添加@JvmField的工作就像下面一样。

@JvmField @MyAnnotation var spUserName : String? = null

但是我不希望我的用户在我的注释上方添加一个注释。如果字段太多,则会增加代码。

请建议采取其他替代方法来避免使用@JvmField

所以我的问题是如何使我的领域在Kotlin中不私有?

1 个答案:

答案 0 :(得分:0)

@MyAnnotation
public var str: String? = null

添加public修饰符

我不知道为什么删除此答案。如果您访问过this link,您将看到班级内成员的默认修饰符为private