摘要:
协变、逆变是在有继承关系的对象间有合法赋值关系时, 相应的构造对象间对应的赋值关系是否成立。 我们可以理解成是由Object构造出来的一种新的类型,可以认为是一种构造类型,记f(Object)(可以类比下初中数学中函数的定义),那么我们可以这么来描述协变和逆变: 当A ≦ B时,如果有f(A) ≦ 阅读全文
摘要:
类型参数化 在scala中,类型参数化(类似于泛型)使用方括号实现,如:Foo[A],同时,我们称Foo为高阶类型。如果一个高阶类型有2个类型参数,则在声明变量类型时可以使用中缀形式来表达,此时也称该高阶类型为中缀类型,示例如下: class Foo[A,B] val x:Int Foo Strin 阅读全文
摘要:
Java泛型中的协变和逆变 一般我们看Java泛型好像是不支持协变或逆变的,比如前面提到的List<Object>和List<String>之间是不可变的。但当我们在Java泛型中引入通配符这个概念的时候,Java 其实是支持协变和逆变的。 看下面几行代码: 可见在Java泛型中通过extends关 阅读全文