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

标签 java android kotlin annotations kotlin-interop

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

你知道如何做到吗?一些 Kotlin 注释或编译器指令

问题: 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 代码工具显示了类的 Java 代码的样子。因此,它将包括@Nullable和@NotNull;它们是语言的核心部分。它们的作用是处理 null 安全性。

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

如果您因注释而遇到问题,只需使用 Java 即可。注释不会添加到那里,并且您不会遇到任何问题。您需要混合使用这些语言,但它是为此而设计的,所以您应该没问题。

关于java - 如何在 Kotlin 生成的 Java 代码中禁用 @NonNull/@Nullable 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52221783/

相关文章:

java - 如何在 OrmLite 中创建 sqlite 准备语句?

java - 将 Java 转换为 Objective-C

java - 如何通过使用collections.sort使用trim避免NPE?

java - 如何按日期设置文本并增量循环android?

kotlin - 我如何发现Gradle中的configuration.default.collect意味着什么?

java - 如何从 ibm Rational Function Tester 的组合框菜单中选择项目

android - 如何创建包含 SD 卡上特定文件夹图像的自定义图库?

java - 为什么调用 put() 在使用类似代码在 Java 中编译时无法在 Kotlin 中编译

android - Compose 使用 Flow<T>.collectAsState render List<T> LazyColumn progressive

android - Android开发网站中的OBB(Opaque Binary Blob)是什么?