Проблема заключается в том, что в байт-коде Java нет понятия обобщений (называемых стирание типа ), поэтому ваш тип SELF
не будет отображаться в байт-коде. Вот почему в Java вы можете создать экземпляр без указания фактического значения SELF
.
В Kotlin, тем не менее, я предполагаю, что компилятор видит, что CouchbaseContainer
является общим, и он требует от вас предоставить фактическое значение SELF
. Действительно, сообщение об ошибке выглядит примерно так:
Ошибка вывода типа: недостаточно информации для вывода параметра T в
constructor Foo<T : Any!> ( )
Пожалуйста, укажите это явно.
Также обратите внимание, что если тип может быть выведен (например, потому что вы передаете его через конструктор), вам не нужно предоставлять его, как в следующем примере (взято из документация ) :
class Box<T>(t: T) {
var value = t
}
val box = Box(1) // T is inferred to be Int