【发布时间】:2016-11-19 18:34:22
【问题描述】:
奇怪的是,我的 Kotlin 代码之前编译得很好,当它在 java 类 Allocator 中看起来像这样时:
public void setAllocMethod(@NotNull AllocMethod allocMethod) {
this.allocMethod = allocMethod;
}
但是当我把 java 类的 setter 改成这个时:
public void setAllocMethod(@Nullable AllocMethod allocMethod) {
this.allocMethod= allocMethod;
}
然后当我编译项目时,我在调用 java 对象的 kt 文件中得到这个 Kotlin 错误:
Val 无法重新分配
allocator.allocMethod = DefaultAllocMethod() // kotlin code
这里还有 java getter:
public @NotNull AllocMethod getAllocMethod() {
if (allocMethod == null) allocMethod = DefaultAllocMethod.newDefault();
return allocMethod;
}
DefaultAllocMethod 是 AllocMethod 的 java 子类
allocator 是Allocator 类型,它是一个具有上述getter 和setter 的java 类。
谁能解释发生了什么?谢谢
【问题讨论】:
-
您能否在问题中扩展一下 java getter 方法的外观?
-
ok,完成...你认为问题在于getter返回
@NotNull但setter的参数是@Nullable?
标签: kotlin