有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Kotlin生成priavate字段:@MyAnnotation字段不能是私有的或静态的

我正在学习科特林

我开发了一个基于注释处理的Java库。这个库在Java上运行得非常好。我的库包含用户可以放在类字段上的注释。但是为了处理该字段,该字段不应该是privatestatic

@MyAnnotation
private String userName;

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

一旦用户删除private,它就开始工作了

现在以科特林为例

@MyAnnotation
var spUserName : String? = null

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

...
private java.lang.String spUserName;
...

所以我的注释处理器抛出了一个编译时错误

搜索完web后,在该字段上添加@JvmField的工作方式与下面的完全相同

@JvmField
@MyAnnotation
var spUserName : String? = null

但我不希望我的用户在我的注释之上再添加一个注释。如果有这么多的字段,它会增加代码

请建议任何其他避免@JvmField的替代方案

所以我的问题是:如何在Kotlin中不使用@JvmField而使我的字段非私有


共 (1) 个答案

  1. # 1 楼答案

    @MyAnnotation
    public var str: String? = null
    

    添加public修饰符

    我不知道为什么我删除了这个答案。如果您访问了this link,您将看到类内成员的默认修饰符是private