为啥kotlin中的注解@JvmSynthetic对字段无效?

kotlin的文档中说@JvmSynthetic注解的原理是在字节码中添加ACC_SYNTHETIC访问标识符,因此java代码不能访问

// kotlin
open class BaseEntity{

    @JvmSynthetic
    var id: Long = 0

    @JvmSynthetic
    fun f() { }

}

可为什么只对方法起作用,用java代码仍然可以访问kotlin中被@JvmSynthetic修饰字段

// java
public class Main {
    public static void main(String[] args) {
        BaseEntity entity = new BaseEntity();
        entity.f();        // Cannot resolve method 'f' in 'BaseEntity'
        entity.getId();        // 正常访问
    }
}
阅读 1.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题