: Disposable
Указывает, что тип возвращаемой функции равен Disposable
.
, а часть where T : Observable<String>
указывает upper
bound
для параметра типа generic
T
. Проще говоря, это означает, что T
должно быть subtype
из Observable<String>
.
При работе с generic
types
вы можете указать upper
bound
как
// This function can only be called with types implementing Collection<Int>
fun <T: Collection<Int>> someFun(first: T, second: T)
// If you try to call it as following, it will not compile
someFun(listOfStrings, listOfStrings)
, но если вам нужно указать несколько upper
bounds
, то вы должны использовать where
clause
как
// This function can only be called with types implementing Iterable<Int>
// as well as Serializable
fun <T> someFun(first: T, second: T): Int where T: Iterable<Int>,T: Serializable
// This does not work, you can not comma separate the upper bounds
fun <T: Iterable<Int>, Serializable> someFun(first: T, second: T): Int
Как указано в документации
В угловых скобках может быть указана только одна верхняя граница. Если для одного и того же параметра типа требуется более одной верхней границы, нам нужно отдельное предложение where.