【发布时间】:2018-11-16 18:06:24
【问题描述】:
class MapBuilder<T,U> {
operator fun invoke(arg: T): MapBuilder<T, U> {
return this
}
operator fun invoke(arg: U): MapBuilder<T, U> {
return this
}
}
当然,由于 JVM 限制,它不起作用。
Platform declaration clash: The following declarations have the same JVM signature (invoke(Ljava/lang/Object;)Lcom/test/tests/MapBuilder;):
operator fun invoke(arg: T): MapBuilder<T, U> defined in com.test.tests.MapBuilder
operator fun invoke(arg: U): MapBuilder<T, U> defined in com.test.tests.MapBuilder
任何想法,我该如何实现?
【问题讨论】:
-
Ofc 这是不可能的,因为如果我声明
MapBuilder<String, String>则无法区分调用哪个方法。您解释一下您要达到什么目的以获得更好的答案会很有帮助。
标签: java generics kotlin legacy