问题标签 [kotlin-generics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - 为什么不能使用同名但具有不同泛型的方法?
我是 Kotlin 语言的新手,但是我刚刚遇到了一些其他语言中没有的奇怪行为,所以我想问为什么我不能这样做:
此代码引发“冲突重载”错误。
在其他语言中,例如 C#,我可以做到这一点,这是一个非常巧妙的技巧,只有一种方法可以同时适用于一种或多种类型。
我发现的唯一解决方法是在每个新方法中添加一个我永远不会使用的可选参数,例如:
kotlin - 具有泛型和实现接口的 Kotlin 类
我正在开发中使用Kotlin
,Android
我想创建具有两个泛型的类,其中一个V
必须是 的子类View
,并且类也应该实现一些接口MyInterface
。
怎么做?我试过这样的东西
class Test<T, V>(val value1: String, val map: Map<T, V>) where V: View, MyInterface
或者
class Test<T, V>(val value1: String, val map: Map<T, V>) where V: View: MyInterface
但我不知道什么是正确的语法?
kotlin - Why can't Kotlin smart cast between an interface and the generic type that is derived from it?
I have the following class:
I receive a pre-compilation error stating:
To fix this pre-compilation error I am casting the ViewIntent object to I:
But why can't Kotlin detect that I
must be derived from ViewIntent
and smart cast it?
kotlin - 我可以扩展 Comparable在科特林?
我想为 Kotlin 的/实现min()
/别名,如果没有其他扩展接口的练习(到目前为止我只扩展了类)。max()
Comparable<T>coerceAtLeast()
coerceAtMost()
我试过这个:
但我收到以下错误:
至此,我对 Kotlin 泛型的有限理解基本溢出了。我正在努力做的事情可以实现吗?我缺少的拼图是什么?
android - (kotlin) editText.toString().toInt() 在 anroid studio 中不起作用
安装 apk
的不行。我认为edittext.toString.toInt
是错误的。
kotlin - 为什么翻译后的 kotlin 代码抱怨数组? 成为一个数组
有一个java类,使用androidStudio翻译成kotlin。出现错误,不知道如何正确翻译。
的java代码:
代码翻译后,得到错误:required Array<BaseData>?, found Array<out BaseData>
,但调用translators
中cloneArray<BaseData>(translators)
的定义为 val translators: Array<BaseData>?
,
谁能帮忙解释一下?
kotlin - 仅将标记为 reified 的类型传递给 Kotlin 泛型函数
假设我有以下代码:
我这样调用函数:
但是我不想传递一个类对象,而是AppleJuice
作为一个类型传递:
我已将我的函数重构为内联reified
:
但现在我必须指定两种类型:
理论上,Apple
不应该需要类型,因为它已经从AppleJuice
类型中知道了。是否有可能摆脱传递不必要的类型而只传递那些作为reified
?
java - kotlin 泛型仅适用于消费者
假设我有这个 java 示例:
注意第二个参数是如何声明的? super T
。我需要这个,因为我想这样调用该方法:
现在我正试图用 kotlin 来实现同样的目标(我对它的经验很少):
现在我正在尝试使用它:
有趣的是,这并没有失败(除非我在这里对 kotlin 知之甚少)。
我真的希望我需要在声明中添加一些东西,比如Sink<in T>
让编译器知道这实际上只是一个Consumer
,或者in T
默认情况下总是打开?
比我更了解 kotlin 的人能指出我正确的方向吗?