泛型

package chapter04

object test10 {
  def main(args:Array[String]):Unit={


    test[Person10](new Person10)
    test1[Child10](new Child10)

    def test[T](t:T):Unit={
      println(t)
    }

    //上限;子类或者当前类
    def test1[T<:User10](t:T):Unit={
      println(t)
    }

    //下限:和java不一样,什么都可以传递
    def test2[T>:User10](t:T):Unit={
      println(t)
    }

  }

}


class Person10{}
class User10 extends Person10{}
class Child10 extends User10
package chapter04

object test11 {
  def main(args:Array[String]):Unit={

    //默认情况下,Scala泛型和Java一样,保持不变性
    val test = new Test[User11]
    println(test)

    //协变;子类
    val test2 = new Test2[Child11]
    println(test2)

    //逆变;父类
    val test3 = new Test3[Person11]
    println(test3)

  }

}


class Person11{}
class User11 extends Person11{}
class Child11 extends User11
class Test[User]{}
//上限;+
class Test2[+User]{}
//下限:-
class Test3[-User]{}

 

posted on 2020-08-14 14:19  happygril3  阅读(114)  评论(0)    收藏  举报

导航