当前位置:首页 > 开发 > 编程语言 > Scala > 正文

【Scala九】Scala核心三:泛型

发表于: 2015-02-25   作者:bit1129   来源:转载   浏览:
摘要: 泛型类 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: Arr

泛型类

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九】Scala核心三:泛型

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
本节主要内容 泛型(Generic Type)简介 注解(Annotation)简介 注解常用场景 1. 泛型(Generic Type
确切来说应该是我打算怎么去学习Scala泛函编程。在网上找不到系统化完整的Scala泛函编程学习资料,
Scala的类层级 Scala里,每个类都继承自通用的名为Any的超类。因为所有的类都是Any的子类,所以定义
主要来自 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 《Functional Programming Princi
无参方法 功能:将方法的定义转换为属性字段的定义; 作用范围:方法中没有参数,并且方法仅能通过
泛型代码和虚拟机 1)类型变量的擦除 虚拟机并没有泛型类型的对象,所有的对象都是普通类,即使是我
根据Play!开发团队透露,团队正在着力开发Play的下一个主要版本(也就是Play 2.0),该版本集成了一
用Java语言开发许久了,一直接触指令式的语言开发,同时也做的多了,也逐渐感觉到了静态语言的一些
继承类 使用extends关键字来继承一个类。如果将类声明为final的,则这个类不能被继承。如果将类的方
用Java语言开发许久了,一直接触指令式的语言开发,同时也做的多了,也逐渐感觉到了静态语言的一些
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号