如何在 Kotlin 生成的 Java 代码中禁用 @NonNull/@Nullable 注释
How to disable @NonNull/@Nullable annotations in Kotlin generated Java code
我需要在 Kotlin 生成的 Java 代码中禁用 @NonNull/@Nullable
注释,因为某些注释适配器(代码生成器)无法正确处理某些带注释的字段
你知道怎么做吗?一些 Kotlin 注释或编译器指令
问题:
科特林 class:
open class TestModel(
var test: ByteArray = ByteArray(0)
)
生成java:
public class TestModel {
@org.jetbrains.annotations.NotNull()
private byte[] test;
@org.jetbrains.annotations.NotNull()
public final byte[] getTest() {
return null;
}
public final void setTest(@org.jetbrains.annotations.NotNull()
byte[] p0) {
}
public TestModel(@org.jetbrains.annotations.NotNull()
byte[] test) {
super();
}
public TestModel() {
super();
}
}
我想删除:@org.jetbrains.annotations.NotNull()
注释
你不能。生成的 Java 代码工具显示了 class 的 Java 代码的样子。因此,它将包含@Nullable 和@NotNull;它们是语言的核心部分。他们在那里处理空安全。
val x: String
与 @NotNull public String x
相同(需要初始化和分号才能有效,但您明白了)。你不能从编译代码中自动删除它们,除非你编写自己的编译器(但这真的很痛苦)。
如果您因为注释而遇到问题,请改用 Java。注释不会添加到那里,您不会有任何问题。你需要混合使用这些语言,但它是为此而设计的,所以你应该没问题。
我需要在 Kotlin 生成的 Java 代码中禁用 @NonNull/@Nullable
注释,因为某些注释适配器(代码生成器)无法正确处理某些带注释的字段
你知道怎么做吗?一些 Kotlin 注释或编译器指令
问题: 科特林 class:
open class TestModel(
var test: ByteArray = ByteArray(0)
)
生成java:
public class TestModel {
@org.jetbrains.annotations.NotNull()
private byte[] test;
@org.jetbrains.annotations.NotNull()
public final byte[] getTest() {
return null;
}
public final void setTest(@org.jetbrains.annotations.NotNull()
byte[] p0) {
}
public TestModel(@org.jetbrains.annotations.NotNull()
byte[] test) {
super();
}
public TestModel() {
super();
}
}
我想删除:@org.jetbrains.annotations.NotNull()
注释
你不能。生成的 Java 代码工具显示了 class 的 Java 代码的样子。因此,它将包含@Nullable 和@NotNull;它们是语言的核心部分。他们在那里处理空安全。
val x: String
与 @NotNull public String x
相同(需要初始化和分号才能有效,但您明白了)。你不能从编译代码中自动删除它们,除非你编写自己的编译器(但这真的很痛苦)。
如果您因为注释而遇到问题,请改用 Java。注释不会添加到那里,您不会有任何问题。你需要混合使用这些语言,但它是为此而设计的,所以你应该没问题。