奇怪的是,我的Kotlin代码之前编译得很好,当它在java类中看起来像这样Allocator:
public void setAllocMethod(@NotNull AllocMethod allocMethod) {
this.allocMethod = allocMethod;
}
Run Code Online (Sandbox Code Playgroud)
但是当我将java类的setter改为:
public void setAllocMethod(@Nullable AllocMethod allocMethod) {
this.allocMethod= allocMethod;
}
Run Code Online (Sandbox Code Playgroud)
然后当我编译项目时,我在调用java对象的kt文件中得到了这个Kotlin错误:
Val无法重新分配
allocator.allocMethod = DefaultAllocMethod() // kotlin code
这里也是java getter:
public @NotNull AllocMethod getAllocMethod() {
if (allocMethod == null) allocMethod = DefaultAllocMethod.newDefault();
return allocMethod;
}
Run Code Online (Sandbox Code Playgroud)
DefaultAllocMethod 是一个java的子类 AllocMethod
allocator是类型Allocator,它是一个具有上述getter和setter的java类.
任何人都可以解释发生了什么?谢谢
你的二传手的类型@Nullable AllocMethod,即Kotlin的AllocMethod?类型@NotNull AllocMethod,与吸气剂类型不匹配,这是Kotlin的AllocMethod
错误消息的含义是,由于类型不匹配,因此只将getter视为属性.所以从Kotlin的观点来看,而不是var allocMethod你拥有val allocMethod和fun setAllocMethod(...)
| 归档时间: |
|
| 查看次数: |
2529 次 |
| 最近记录: |