文档章节

scala类型参数的上界和下界

whoisliang
 whoisliang
发布于 2018/10/16 22:33
字数 200
阅读 10
收藏 0

class Pair[T <: Comparable[T]](val first:T,val second:T) //类型T必须要是Comparable接口的子类(即T是Comparable的下界)
{
  def bigger = if(first.compareTo(second) > 0) first else second
}
class Pair_Lower_Bound[T](val first:T,val second:T)
{
  def replaceFirst[R >: T](newFirst:R) = new Pair_Lower_Bound(newFirst,second) //类型R是T类型的父类(也即R是T的上界)
}
object Type_Variables_BoundsTest {
  def main(args: Array[String]): Unit = {
    val pair = new Pair("aspark","hadoop")
    println(pair.bigger)  //会打印hadoop
  }
}

另外,如果某个类或函数写成如下形式:

def onefun[K,V,F <:Comparable[T]](........) = {......}

则表明onefun函数中有三个类型参数,并且每个参型参数的上界是Comparable[T]

 

© 著作权归作者所有

共有 人打赏支持
上一篇: scala的视图界定
whoisliang
粉丝 4
博文 382
码字总数 133642
作品 0
武汉
私信 提问
scala-协变、逆变、上界、下界

测试源代码 欢迎大家关注: scala工具库 ,里面包含各种库的测试用例和使用说明文档 B是A的子类,A是B的父类。 当我们定义一个协变类型List[A+]时,List[Child]可以是List[Parent]的子类型。 ...

jacksu
2015/11/20
0
5
Scala的协变covariant(+),逆变contravariant(-),上界(:)

原文:https://my.oschina.net/xinxingegeya/blog/486671 Scala的协变(+),逆变(-),上界(<:),下界(>:) 协变covariant、逆变contravariant、不可变invariant 对于一个带类型参数的类型,比如...

u013063153
2017/11/09
0
0
Scala的协变(+),逆变(-),上界(:)

Scala的协变(+),逆变(-),上界(<:),下界(>:) 协变covariant、逆变contravariant、不可变invariant 对于一个带类型参数的类型,比如 List[T],如果对A及其子类型B,满足 List[B]也符合List[...

秋风醉了
2015/08/02
0
0
Scala之类型参数化:Type Parameterization

Scala之类型参数化:Type Parameterization 本文原文出处: http://blog.csdn.net/bluishglc/article/details/52584401 严禁任何形式的转载,否则将委托CSDN官方维护权益! 型变:Variance 型...

bluishglc
2016/09/19
0
0
Scala版的生产者消费者模型&泛型中的协变(Covariance)与逆变(Contravar...

class BoundedBufferA : ClassManifest {var in = 0var out = 0var n = 0 val elems = new ArrayA def put(x: A) = synchronized {while (n >= N) wait()elems(in) = xin = (in + 1) % Nn = ......

开源中国驻成都办事处
2012/07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

js 写文件

//写文件function doSave(value, type, name) {    var blob;    if (typeof window.Blob == "function") {        blob = new Blob([value], {type: type});    }......

重城重楼
13分钟前
1
0
Ubuntu and Apache 搭建 Let's Encrypt SSL Https

本文参考来着来自https://www.howtoing.com/install-free-lets-encrypt-ssl-certificate-for-apache-on-debian-and-ubuntu 感谢作者的分享 本事例环境介绍 ubuntu (Version 16.04.1 LTS) ubu......

罗培海
17分钟前
8
0
如何优雅的使用RabbitMQ

目录 RabbitMQ无疑是目前最流行的消息队列之一,对各种语言环境的支持也很丰富,作为一个.NET developer有必要学习和了解这一工具。消息队列的使用场景大概有3种: 1、系统集成,分布式系统的...

编程SHA
19分钟前
1
0
阿里开发者们的第19个感悟:Simple is better.

1月16日,Simple is better.这是我们送给开发者的第19个感悟。 Mars,基于矩阵的统一计算框架。已经开源。那么:Mars 是什么,能做什么,怎么做的;Mars 如何分布式地执行等。可以与继盛多交...

阿里云官方博客
20分钟前
2
0
StringBuffer 和 StringBuilder 的 3 个区别

StringBuffer 和 StringBuilder 它们都是可变的字符串,不过它们之间的区别是 Java 初中级面试出现几率十分高的一道题。这么简单的一道题,栈长在最近的面试过程中,却经常遇到很多求职者说反...

Java技术栈
24分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部