gpt4 book ai didi

java - 在 Kotlin 中使用带有 @NotNull setter 和 @Nullable getter 的 Java 字段

转载 作者:行者123 更新时间:2023-12-01 04:30:32 26 4
gpt4 key购买 nike

我有以下 Java 类:

public class JavaClass {

private String nullableJavaField;

@Nullable public String getNullableJavaField() {
return nullableJavaField;
}

public void setNullableJavaField(@NotNull String nullableJavaField) {
this.nullableJavaField = nullableJavaField;
}
}

意图是 nullableJavaField 最初可能为 null,但任何后续的设置操作都应该只使用非 null 值。当从另一个 Java 类调用时,它按预期工作:

JavaClass jv = new JavaClass();
jv.setNullableJavaField(null); // Produces warning about passing null parameter

但是,等效的 Kotlin 代码会产生错误“Val cannot be reassigned”:

val jv = JavaClass()
jv.nullableJavaField = "Foo" // Produces error "Val cannot be reassigned"

据我所知,nullableJavaField 不是最终的,那么为什么 Kotlin 会提示分配给 val?我搜索过类似的问题,例如 thisthis ,但找不到答案。

最佳答案

对于 Kotlin 这不是可变属性。 setNullableJavaField 需要一个 String,而 getNullableJavaField 返回一个 String?nullableJavaField 因此作为出色地。所以你必须直接使用setter。

val jv = JavaClass()
jv.setNullableJavaField("Foo")

关于java - 在 Kotlin 中使用带有 @NotNull setter 和 @Nullable getter 的 Java 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58948100/

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