scala类型系统:11) upper bounds & lower bounds
2016-11-09 09:52
260 查看
scala类型系统:11) upper bounds & lower bounds
Upper Bounds
在Java泛型里表示某个类型是Test类型的子类型,使用extends关键字:
这种形式也叫
在Java泛型里表示某个类型是Test类型的父类型,使用super关键字:
这种形式也叫
基本上与java一致,不过在复杂一点的情况下,对多重界定,有一些差异:
Java里,T 同时是 A 和 B 的子类型,称为
Scala里对上界和下界不能有多个,不过变通的做法是使用复合类型(compund type):
而对于
Scala里对复合类型同样可以使用
因为Scala里对于
转载自:http://hongjiang.info/scala/ 推荐大家阅读下这位大哥出版的书《Scala函数式编程》
Upper Bounds
在Java泛型里表示某个类型是Test类型的子类型,使用extends关键字:
<T extends Test> //或用通配符的形式: <? extends Test>
这种形式也叫
upper bounds(中文为上限或上界),同样的意思在scala的写法为:
[T <: Test] //或用通配符: [_ <: Test]
upper bounds适用于把泛型对象当作数据的提供者(生产者)的场景下:
scala> def pr(list : List[_ <: Any]) { list.foreach(print) }
Lower Bounds
在Java泛型里表示某个类型是Test类型的父类型,使用super关键字:<T super Test> //或用通配符的形式: <? super Test>
这种形式也叫
lower bounds(中文为下限或下界),同样的意思在scala的写法为:
[T >: Test] //或用通配符: [_ >: Test]
lower bound适用于把泛型对象当作数据的消费者的场景下:
scala> def append[T >: String] (buf : ListBuffer[T]) = { buf.append( "hi") }
基本上与java一致,不过在复杂一点的情况下,对多重界定,有一些差异:
Java里,T 同时是 A 和 B 的子类型,称为
multiple bounds
<T extends A & B>
Scala里对上界和下界不能有多个,不过变通的做法是使用复合类型(compund type):
[T <: A with B]
而对于
lower bounds,在java里则不支持
multiple bounds的形式:
<T super A & B> //java不支持
Scala里对复合类型同样可以使用
lower bound
[T >: A with B]
因为Scala里对于
A with B相当于
(A with B),仍看成一个类型,参考复合类型
转载自:http://hongjiang.info/scala/ 推荐大家阅读下这位大哥出版的书《Scala函数式编程》
相关文章推荐
- scala类型系统:11) upper bounds & lower bounds
- Scala类型 11: Upper Bounds & Lower Bounds
- scala类型系统:12) view bounds-视图界定
- 一步步学spark之一scala高级特性中Lower bounds(下界)与Upper bounds(上界),View bounds(视图边界)3.7
- scala类型系统:4) 内部类,路径依赖类型&类型投影
- scala类型系统:14) multiple bounds-多重界定
- scala类型系统:13) context bounds
- scala类型系统:9) this别名&自身类型
- scala类型系统context bounds
- scala类型系统:12) view bounds
- scala类型系统:13) context bounds-上下文界定
- 将ext3转换为ext2 && 查询分区文件系统类型 [转]
- C# Office编程——Word 错误类型:“系统找不到 Microsoft.Office.Interop.Word"
- Linux硬连接、软连接的原理 兼述磁盘组成&文件系统类型
- Scala in depth 6 Scala的类型系统 中
- Scala in depth 6 Scala的类型系统 上
- C++标准库---已序区间算法之二lower_bound()&upper_bound()&equal_range()
- Scala类型 9:自身类型 & this别名
- Linux查看文件系统类型和UUID df -T & blkid
- &菜鸟收藏:熟知Word箭头样式类型设置&【系统收藏】