【Scala九】Scala核心三:泛型
编程技术  /  houtizong 发布于 3年前   74
package spark.examples.scala.genericsclass 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必须是某个类型的超累,
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接