fun copyWhenGreater(list: List, threshold: T) : List where T : CharSequence, T : Comparable { return list.filter { it > threshold } .map { it.toString() } }
fun copyWhenGreater(list: List, threshold: T) : List where T : CharSequence, T : Comparable { return list.filter { it > threshold } .map { it.toString() } }
val nums = mutableListOf(1, 2, 3) val ints = mutableListOf(1, 2, 3) val num1 : Number = nums[0] // OK val num2 : Number = ints[0] // OK nums.add(10.0) // OK ints.add(10.0) // NG
class Contravariant(value: T) val num : Contravariant = Contravariant(100) val int : Contravariant = Contravariant(10.0) invariant, covariant, contravariant