gpt4 book ai didi

generics - Kotlin强制参数类型为字符串, bool 值或数字

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

我有一个用例,我向服务器发送一些数据(作为分析数据),这些数据始终是StringBooleanNumber

如何强制调用方仅发送数字, bool(boolean) 值或字符串,而不发送其他任何对象?

以下情况应能工作:

userProperties: MutableMap<String, in AnyPrimitive> = mutableMapOf(),

userProperties.put("someKey", 1)
userProperties.put("someKey", 1.2f)
userProperties.put("someKey", "someValue")
userProperties.put("someKey", true)

但不是
userProperties.put("someKey", myCustomObjectInstance)

我尝试的方法是创建一个抽象类 EventData,该类实现 CharSequenceNumber。但这要求每个人都创建这些类的实例,而不仅仅是发送数字或字符串。

我可以放一个逻辑来检查类型并引发异常,但我更希望在编译时对其进行限制。

最佳答案

如果要从使用 Angular 简化,请声明send函数,如下所示:

fun send(arg: Any) {
//Validations here:
if (!validate(arg)) throw IllegalArgumentException("...")

//Actual send code here...
}

private fun validate(arg: Any): Boolean {
return (arg is String || arg is Boolean || arg is Number)
}

请注意,这不是在编译时强制执行,而是运行时失败。因此,如果有人将
send(RandomObject)

编译将成功。在运行时,它将失败。

关于generics - Kotlin强制参数类型为字符串, bool 值或数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61076223/

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