有没有办法减少/删除Kotlin中的冗余通用参数?

有没有办法减少/删除Kotlin中的冗余通用参数?,kotlin,generics,Kotlin,Generics,考虑以下功能: 抽象类ObservableCollection:CoroutineScope,MutableCollection{…} 类ObservableList(重写val backingSource:MutableList=mutableListOf()):ObservableCollection(),通过backingSource{…}创建的MutableList on(作用域:CoroutineScope=this,noinline使用者:suspend(T)->Unit):作业=

考虑以下功能:

抽象类ObservableCollection:CoroutineScope,MutableCollection{…}
类ObservableList(重写val backingSource:MutableList=mutableListOf()):ObservableCollection(),通过backingSource{…}创建的MutableList
on(作用域:CoroutineScope=this,noinline使用者:suspend(T)->Unit):作业=
事件缓冲区(通道无限)
.filterIsInstance().onEach{
runCatching{consumer(it)}.onFailure{observeCollection.logger.catching(it)}
}.catch{observetecollection.logger.catching(it)}
.launchIn(范围)
称之为第一种和一般的方式(在脑海中):

val list=ObservableList()
名单{
}
为了使它更具惯用性(消除传递显式泛型的冗余),我们可以有如下内容:

list.on{event:ElementAddEvent->
}
但是有没有一种方法可以删除
{event:ElementAddEvent->
中的显式泛型类型
?因为它是隐式的,来自于调用
on
方法/函数的可观察列表的类型

编辑:
Event
基本上是所有可能事件的接口,如
ElementRemoveEvent
ElementAddEvent
elementreplacevent

接口事件:CoroutineScope{
覆盖val coroutineContext:coroutineContext
get()=collection.coroutineContext
val集合:ObservableCollection
}
类元素AddEvent(
val元素:E,
覆盖val集合:ObservableCollection
):事件
类ElementReplaceEvent(
瓦尔新元素:E,
val oldElement:E,
覆盖val集合:ObservableCollection
):事件
//等等。。。
这基本上与问题无关,所以我没有把它放在上面

编辑2: 一种方法是在每个事件中创建静态函数,如:

class ElementAddEvent(
val元素:E,
覆盖val集合:ObservableCollection
):事件{
伴星{
乐趣开启(收集:ObservableCollection,使用者:suspend(ElementAddEvent)->Unit){
collection.on{event:ElementAddEvent->
消费者(活动)
}
}
}
}
这将使以下情况成为可能:

ElementAddEvent.on(列表){
}

但我认为这会在源中产生太多噪音,因此我更愿意使用问题本身中发布的第二种方法(在lambda中指定类型)。如果我遗漏了一些问题,您可以让我知道!

什么是
事件
事件
记录器。捕获
?添加最小可重复性example@IR42logger.catching只是记录流内部未捕获的错误,它来自。
events
是一个没有支持字段的gettert从一个
广播频道
给出
事件
。实际上这里没有错误,我只是想知道是否有办法摆脱
或任何我们必须显式编写的泛型类型,即使它是从调用它的
ObservableList
类型隐式知道的。没有kotlin中的这种特性,你必须明确地指定泛型类型参数EAH,非常确定kotlin中没有类似的东西。它有点像Java中的菱形运算符,kotlin没有。隐式参数是全部或无。