1.
sealed class List<T>
fun <T> maxOf(a:T,b:T):T {
}
2.
fun <T:Comparable<T>> maxOf2(a:T,b:T):T{
return if (a>b) a else b
}
fun <T> maxOf3 (a:T,b:T) where T:Comparable<T>{
}
3.
fun <T> callMax(a:T,b:T) where T:Comparable<T>,T:()->Unit{
return if (a>b) a() else b()
}
4.
fun <T,R> callMax2(a:T,b:T):R where T:Comparable<T>,T:()->R,R:Number{
return if (a>b) a() else b()
}
5.
interface Book
interface EduBook:Book
class BookStore<out T:Book>{
fun getbook():T{
}
}
open class Waster
class DryWaster:Waster()
class Sustbin<in T:Waster>{
fun put(t:T){
}
}