gpt4 book ai didi

java - 注释生成的 Java 源可为空性(适用于 Kotlin)

转载 作者:行者123 更新时间:2023-11-30 02:41:32 25 4
gpt4 key购买 nike

我正在使用源生成工具 ( ) 为我的项目生成 Java 源文件。然而,我的大部分(如果不是全部)代码都是用 Kotlin 编写的。

Kotlin 已经提供 great Java interop ,因此使用生成的源不是问题。然而,由于 Kotlin brings Java's nullable types into a null-safe system ,我失去了使用 Kotlin 的大部分空安全性。最好的情况是我有平台类型的警告(使类型明确以避免微妙的错误);在最坏的情况下,我会遇到意想不到的崩溃和微妙的错误。

但是,Kotlin 确实尊重 nullability annotations ,例如 JSR-305、FindBugs、Lombok、Eclipse 和 JetBrains 各自形式的 @Nullable/@NonNull,将它们作为适当的非 null 类型或可选类型引入.

因为代码已生成,并且我可以访问源代码(并了解其工作原理),所以我知道哪些函数可以/不返回 null,并且希望对它们进行注释,以便它们包括整齐地进入我的空安全代码。但是,我无法直接将注释添加到代码中,因为它是在构建步骤期间生成的,并且会覆盖任何手动更改。

为了在空安全代码中使用,是否可以/注释生成的 java 源的可空性的最佳方法是什么?

最佳答案

最好的方法是修改源代码生成器,使其包含您需要的注释。

如果您无法修改生成器(例如,因为生成器是专有的并且您没有其源代码),那么您可以使用字节码工程来完成此操作。例如,ASM 站点上的此页面提供了一种方法:

当然,无论哪种情况,您都需要某种方式来告诉工具(生成器、字节码重写器等)应该注释哪些方法。

关于java - 注释生成的 Java 源可为空性(适用于 Kotlin),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528843/

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