如何在Kotlin生成的Java代码中禁用@NonNull / @ Nullable注释

问题描述 投票:0回答:1

我需要在Kotlin生成的Java代码中禁用@NonNull/@Nullable注释,因为一些注释适配器(代码生成器)无法正确处理某些带注释的字段

你知道怎么做吗?一些Kotlin注释或compilator指令

问题:kotlin类:

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 android kotlin annotations kotlin-interop
1个回答
1
投票

你不能。生成的Java代码工具显示了类的Java代码。结果,它将包括@Nullable和@NotNull;它们是语言的核心部分。他们在那里处理无效安全问题。

val x: String@NotNull public String x相同(需要初始化和分号才有效,但你明白了)。你不能自动从编译的代码中删除它们,除非你编写自己的编译器(但这将是一个真正的痛苦)。

如果由于注释而出现问题,请使用Java代替。注释没有添加到那里,你不会有任何问题。你需要混合语言,但它是专为它设计的,所以你应该没问题。

© www.soinside.com 2019 - 2024. All rights reserved.