`
bit1129
  • 浏览: 1051517 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Scala九】Scala核心三:泛型

 
阅读更多

泛型类

package spark.examples.scala.generics

class GenericClass[K, V](val k: K, val v: V) {
  def print() {
    println(k + "," + v)
  }
}

object GenericClass {
  def main(args: Array[String]) {
    ///不需要指定K,V的类型,自动推断
    val gc = new GenericClass("ABC", 100)
    ///显式指定K,V的类型,自动推断
    val gc2 = new GenericClass[String, Integer]("ABC", 100)
    gc.print
    gc2.print
  }
}

 

 

范型方法

package spark.examples.scala.generics

//仅仅在方法上指定泛型参数
class GenericMethod {
  def print[T](content: T) {
    println(content)
  }
}

object GenericMethod {
  def main(args: Array[String]) {
    val gm = new GenericMethod
    gm.print(100) //不需要指定T的类型,由100自动推断
  }
}

 

范型上下界

有时,需要明确指定范型类T是某个类或者Trait的子类型,比如Comparable接口的子类,这样,才能对泛型类对象进行比较操作。Comparable是泛型的上界?

//指定T必须是实现了Comparable接口的类型,
class ComparableGenericClass[T <: Comparable[T]](val v1: T, val v2: T) {
  def min() = {
    if (v1.compareTo(v2) < 0) v1 else v2
  }
}
object GenericClass {
  def main(args: Array[String]) {
    val cgc = new ComparableGenericClass[String]("10", "20")
    println(cgc.min())
  }
} 

 

有时,也需要指定泛型T必须是某个类型的超累,

 

 

 

 

 

分享到:
评论

相关推荐

    Scala编程(第三版)中英文.zip

    Scala编程(第三版)中英文,代码全 Martin Odersky 是Scala 编程语言的缔造者。他是瑞士洛桑理工学院(EPFL)的教授,同时也是Typesafe, Inc.(已更名为Lightbend)的创始人。他的研究方向是编程语言和系统,更具体...

    scala课件.zip

    Scala概述.pptx 变量.pptx 运算符.pptx 程序流程控制.pptx 函数式编程基础.pptx 面向对象编程(基础部分).pptx 面向对象编程(中级部分).pptx 面向对象编程(高级特性).pptx ...韩顺平_Scala语言核心编程.pdf

    Programming in Scala 2nd Edition 英文版

    他还是Java泛型的合作设计者及当前javac参考编译器的原作者。LexSpoon在EPFL为Scala工作了两年,现为Google软件工程师。Bill Venners Artima的总裁。撰写了许多关于、Java的文章,是《深入Java虚拟机》的作者,以及...

    Scala程序设计(第2版)

    22.2 Java泛型与Scala泛型 430 22.3 JavaBean的性质 432 22.4 AnyVal类型与Java原生类型 433 22.5 Java代码中的Scala名称 433 22.6 本章回顾与下一章提要 434 第23章 应用程序设计 435 23.1 回顾...

    scala中文教程(java 平台开发语言 scala 简单教程)

    匹萨的设计成为了 Java泛型的基础,马丁的 GJ(Generic Java)编译 Java 1.3开始成为了 Sun 微系统的标准编译器(尽管关闭了泛型)。我有幸能够维护这个编译 年,因此我能通过第一手经验从语言设计到语言的实现方面...

    scala-advanced:Scala先进

    scala 入门进阶、常用类库学习 项目结构 模块说明 模块 说明 目的 完成 语言核心特性、特性深度分析示例、常用函数 入门 √ 练习题-std-lib ...scala-lang-语言核心特性 scala-lang-特性深度分析 scala-

    大数据—Scala

    二、课程内容和目标本课程重点讲解Scala核心编程,内容包括: Scala语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数、函数柯里化、偏函数、参数...

    scala-implicits:Scala 的隐式元编程教程

    本教程假设读者对 Scala 语言和泛型有一些基本的了解。 如果你已经了解了隐式,你也可以跳过第一章。 逻辑编程知识不是必需的,但从长远来看是有用的。 10 位 Scala 专家中有 9 位认为启动 Scala 解释器并处理代码...

    快学 scala 中文版 带完整目录

    1.1 Scala解释器 1 1.2 声明值和变量 4 1.3 常用类型 5 1.4 算术和操作符重载 7 1.5 关于方法调用 8 1.6 apply方法 9 1.7 Scaladoc 11 练习 16 第2章 控制结构和函数 A1 19 2.1 条件表达式 20 2.2 语句...

    java8集合源码-scala_study:scala_study

    Wirt的学生,他开发了Pascal,并参与了Java的泛型设计。 Scala 这个名字是什么意思? Scala 被命名为一种可扩展的语言。 顾名思义,scala 可以进行扩展,使其成为特定领域的语言。 此外,含糊不清地,scala 在意大利...

    Scala的集合算子

    集合算子 Scala集合提供了丰富的计算算⼦,⽤于实现集合/数组的...//指定Int的泛型(根据数组的类型而变动),内部提供基本数据类型的隐式值 Ordering[Int] def sorted[B &gt;: Int](implicit ord: scala.math.Ordering[B]

    24泛型

    scala中的泛型可以作用在类,方法和函数上,泛型本身占位符没有任何意义。 只有当传入数据类型或参数时,当前的占位符才会有意义。 2.界定 在指定泛型时,可以对泛型进行范围界定,指定类型,而不是让其随意传入一个类型...

    9. spark学习之旅之scala(三)

    scala简介1.1. 什么是scala1.2. 为什么要学习scala1.3. [Scala官网](https://www.scala-lang.org/)1.4. `Spark,Kafka,Flink都是由Scala语言编写`1.5. Java能做的,Scala都能做,Java不能做的,Scala也能做。Scala...

    haskell_scheme_48:在 48 小时内为自己写一个计划

    玩弄一些 Haskell :mouse_face:我感到困惑的笔记数据类型 data ParsecT s u m a 所以这里的 'suma' 是任何类型,比如 Scala/Java 中的泛型 :bento_box: trait Parsec [ S , U , M , A ] (&lt;|&gt;) :: Monad m =&gt; ...

    magnolia:类型类实例的轻松,快速,透明的泛型派生

    特征派生案例类,案例对象和密封特征的类型类提供轻量级语法来编写派生类,而无需了解Scala的复杂部分基于Scala 3的内置泛型派生使用递归和互递定义支持参数化ADT(GADT),包括递归类型的ADT 支持在协变和反变位置...

    程序员为什么还要刷题-class12:第12类的注释和代码

    程序员常刷题12级 参数多态和泛型编程 我们之前讨论过参数多态是一种让语言更具表现力的方式,同时仍然保持静态类型安全。 ...Scala泛型 Scala 泛型提供了一个泛型编程语言构造的示例。 在定义类和

    matlab转换java代码-ScalaJavaSortComparison:JavavsScala在Quicksort,Mergesort和

    Scala,Java和Clojure ,作者:Jose Miguel Mendez ##语言讨论### Java 使用泛型,我能够对函数进行多态处理以接受为其提供的任何对象。 Java的类型推断意味着编译器无需明确定义即可确定要传入的对象的类型。 主要...

    VarJ:用于推断通配符的 Java 泛型重构工具

    用于推断通配符的 Java 泛型重构工具 该软件包包含会议论文介绍的 Java 重构工具。 使用此包的说明在文件中给出。

    Kotlin 语言参考文档 中文版

    前言 关于翻译 参考文档 相关书籍 入门 基本语法 惯用法 编码规约 基础 基本类型 包 控制流 返回与跳转 类与对象 类与继承 属性(Property)与域(Field) ...泛型 泛型函数 泛型约束(Generic constraint) ...与 Scala 比较

    Kotlin 中文文档.pdf

    类和继承 属性和字段 接口 可见性修饰词 扩展 数据对象 泛型 嵌套类 枚举类 对象表达式和声明 代理模式 代理属性 函数和lambda表达式 函数 高阶函数和lambda表达式 内联函数 其它 多重申明 Ranges 类型检查和自动...

Global site tag (gtag.js) - Google Analytics