gpt4 book ai didi

java - 在 Kotlin Android 中将值传递给函数时进行编译时间检查

转载 作者:行者123 更新时间:2023-12-03 22:08:03 28 4
gpt4 key购买 nike

我正在服用JSON文件作为类的输入,并通过相应的数据类使用 gson 解析值。

我想调用一个接受 String 的函数值作为参数。

允许的字符串值由从 JSON 解析的值决定。文件。我可以以某种方式检查在编译时传递给函数的字符串值并在编译时给出错误吗?

或者,如果我只能根据 JSON 中的值在函数的参数中允许某些值

用例详解:

我正在构建一个 SDK,其中使用 sdk 的人输入 json String。 json 是标准化的,并在我的代码中进行了解析。

{
"name": "Test",
"objects": [
{
"name": "object1",
"type": "object1"
}
]
}

这里的名称值和其他值可能会根据开发人员使用它的输入而有所不同,但 key 保持不变。但是我们需要使用对象名称参数中的值调用函数。
fun testMethod(objectName:String)

因此开发人员将 testMethod 称为 testMethod(object1) .

我需要验证 object1基于 json 的参数,但有什么方法可以将测试方法参数限制为 object1如果开发人员调用 testMethod(obj1),则仅在编译时给出错误

现在我解析 JSON 并在 testMethod() 中进行检查

最佳答案

当然可以做到,但是以您所描述的方式不同。首先,正如您已经提到的,这种行为可以很容易地完成。为此,我们有 Objects.requireNotNull()Guava.Preconditions() .同样,您可以定义您的检查,但这仅适用于运行时。

在编译时做,您需要创建注释预处理器 .与在不同库中所做的相同,其中之一可能是 Lombok , 他们的 NotNullNullable . Android 注释只是为 IDE 警告提供标记和绑定(bind),但在他们的情况下,他们添加了 NotNull在编译期间检查并抛出每个注释使用的异常。

这不是一个简单的方法,但它是你正在寻找的。

关于java - 在 Kotlin Android 中将值传递给函数时进行编译时间检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58414814/

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