gpt4 book ai didi

kotlin - 在 Java 对象的 Kotlin 中设置属性时出现奇怪的 "Val cannot be reassigned"错误

转载 作者:行者123 更新时间:2023-12-04 23:40:00 26 4
gpt4 key购买 nike

奇怪的是,我的 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 Cannot be Reassigned


allocator.allocMethod = DefaultAllocMethod() // kotlin code
这里也是java getter:
public @NotNull AllocMethod getAllocMethod() {
if (allocMethod == null) allocMethod = DefaultAllocMethod.newDefault();
return allocMethod;
}
DefaultAllocMethodAllocMethod 的 java 子类
allocator类型为 Allocator ,这是一个具有上述 getter 和 setter 的 java 类。

谁能解释发生了什么?谢谢

最佳答案

您的二传手类型 @Nullable AllocMethod ,这是 Kotlin 的 AllocMethod? , 与 getter 类型不匹配 @NotNull AllocMethod ,这是 Kotlin 的 AllocMethod
错误消息的意思是,由于类型不匹配,因此只有 getter 被视为属性。所以从 Kotlin 的角度来看,而不是 var allocMethod你有 val allocMethodfun setAllocMethod(...)

关于kotlin - 在 Java 对象的 Kotlin 中设置属性时出现奇怪的 "Val cannot be reassigned"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40696526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com