我正在学习科特林。
我基于注释处理用Java开发了一个库。该库可在Java上完美运行。我的库中包含用户可以在类字段上添加的注释,但是该字段不应为private
或static
来处理该字段。
@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中不私有?
答案 0 :(得分:0)
@MyAnnotation
public var str: String? = null
添加public
修饰符
我不知道为什么删除此答案。如果您访问过this link,您将看到班级内成员的默认修饰符为private
。