karelpeeters
06/24/2018, 8:11 PMT
), which is very rarely true.robstoll
06/24/2018, 8:36 PMkarelpeeters
06/24/2018, 8:40 PMclass Test<T: Any> {
fun <U: T> foo(): U = TODO()
}
interface Parent
interface A: Parent
interface B: Parent
fun main(args: Array<String>) {
val test = Test<Parent>()
val a = test.foo<A>()
val b = test.foo<B>()
}
karelpeeters
06/24/2018, 8:41 PMfoo
because it promises it can return whatever .karelpeeters
06/24/2018, 8:42 PMfoo
doesn't have any generics type information at runtime.robstoll
06/24/2018, 9:34 PMkarelpeeters
06/24/2018, 9:35 PMfindViewById
returns whatever type you want by casting.robstoll
06/24/2018, 9:35 PMkarelpeeters
06/24/2018, 9:36 PMrobstoll
06/24/2018, 9:38 PMrobstoll
06/24/2018, 9:38 PMkarelpeeters
06/24/2018, 9:39 PMkarelpeeters
06/24/2018, 9:39 PMrobstoll
06/24/2018, 9:39 PMrobstoll
06/24/2018, 9:40 PMkarelpeeters
06/24/2018, 9:40 PMrobstoll
06/24/2018, 9:41 PMrobstoll
06/24/2018, 9:41 PMkarelpeeters
06/24/2018, 9:42 PMA
and B
are subtypes.robstoll
06/24/2018, 9:42 PMkarelpeeters
06/24/2018, 9:42 PMrobstoll
06/24/2018, 9:42 PMrobstoll
06/24/2018, 9:42 PMkarelpeeters
06/24/2018, 9:44 PM