Scala的泛型
类比java中的泛型:
上界(协变)、下界(逆变)
scala中泛型采用中括号声明
val array = Array[Int](,,,)
array()
//声明什么类型就返回什么类型
//test[String]()
def test[T](t: T)= { //声明什么类型就返回什么类型
}
泛型上界
test[User2](new User3)
def test[T <: User2](t: T) ={ //上界 从树的结构上比它小的,也就是它的子类型 }
泛型下界
test[User1](new User2)
def test[T >: User2](t: T) ={ //下界 从树的结构上比它大的,也就是它的父类型
println(t)
}
class User1{
}
class User2 extends User1 {
}
class User3 extends User2 {
}
协变(+)(也就是上限上界):这个类型往它的子类中去找,多态的感觉;从类的关系往回推叫逆变(-)(也就是下限下界);它们主要在类声明时使用;
java中:
List<Object> lis = new ArrayList<Object>(); //new ArrayList<Object> 这里只能写Object,不能写其他类型
lis.add(new Dept()); //但可添加其他类型的对象
/*val user: User4[User2] = new User4[User3] //协变,+User2为上限,比它小的子类都可以,父类就不行了*/
val user: User4[User2] = new User4[User1] //逆变,+User2为下限,比它大的父类都可以,子类就不行了
// new User4[User3]
}
class User1{ }
class User2 extends User1 { }
class User3 extends User2 { }
/*class User4[+User2]{ }*/
class User4[-User2]{ //class User4[User2]{} 如果是+ -都不加,就是只能是这个类型 }
Scala的泛型的更多相关文章
- Scala 深入浅出实战经典 第42讲:scala 泛型类,泛型函数,泛型在spark中的广泛应用
王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 ...
- 大数据学习day17------第三阶段-----scala05------1.Akka RPC通信案例改造和部署在多台机器上 2. 柯里化方法 3. 隐式转换 4 scala的泛型
1.Akka RPC通信案例改造和部署在多台机器上 1.1 Akka RPC通信案例的改造(主要是把一些参数不写是) Master package com._51doit.akka.rpc impo ...
- Scala学习——泛型[T]的6种使用(初)
package com.dtspark.scala.basics /** * 1,scala的类和方法.函数都可以是泛型. * * 2,关于对类型边界的限定分为上边界和下边界(对类进行限制) * 上边 ...
- scala的泛型浅析
1. scala泛型浅析 package com.dtspark.scala.basics /** * 1,scala的类和方法.函数都可以是泛型. * * 2,关于对类型边界的限定分为上边界和下边界 ...
- Scala类型参数(泛型)与隐式转换
package com.yz9 import org.junit.Test import scala.collection.mutable.ListBuffer class test { @Test ...
- Scala API - 泛型
- 第42讲:Scala中泛型类、泛型函数、泛型在Spark中的广泛应用
今天来了解下scala的泛型 先让我们看下这段代码 class Triple[F,S,T](val first:F,val second: S,val third: T) val triple = n ...
- scala泛型
package com.ming.test /** * scala泛型 * 类型参数测试 */ object TypeParamsTest { //泛型函数 def getMiddle[T](a:Ar ...
- Scala入门到精通——第十六节 泛型与注解
本节主要内容 泛型(Generic Type)简单介绍 注解(Annotation)简单介绍 注解经常使用场景 1. 泛型(Generic Type)简单介绍 泛型用于指定方法或类能够接受随意类型參数 ...
随机推荐
- jmeter5.1测试dubbo接口
dubbo接口功能介绍 客户端输入uncleyong(当然,也可以是其他字符串),服务端返回hello uncleyong 开发dubbo服务jmeter客户端 idea中创建模块dubbo_jmet ...
- python之路day06--python2/3小区别,小数据池的概念,编码的进阶str转为bytes类型,编码和解码
python2#print() print'abc'#range() xrange()生成器#raw_input() python3# print('abc')# range()# input() = ...
- Day039--HTML
HTML小马哥博客 HTML CSS + DIV实现整体布局 1. HTML 超文本标记语言 对换行不敏感 空白折叠现象 标签要严格密封 新建HTML文件,输入 html:5,按tab键后,自动生成的 ...
- 第一节: Timer的定时任务的复习、Quartz.Net的入门使用、Aop思想的体现
一. 前奏-Timer类实现定时任务 在没有引入第三方开源的定时调度框架之前,我们处理一些简单的定时任务同时都是使用Timer类, DotNet中的Timer类有三个,分别位于不同的命名空间下,分别是 ...
- 第十节:基于MVC5+Unity+EF+Log4Net的基础结构搭建
一. 前言 本节继续探讨一种新的框架搭建模式,框架的结构划分和上一节是相同的,本节IOC框架换成了Unity,并且采用构造函数注入的方式,另外服务层的封装模式也发生了变化,下面将详细的进行探讨. (一 ...
- JavaScript数据类型 String字符串类型的属性和方法
属性 字符串String类型的每个实例都有一个length属性,表示字符串中的字符个数.由于字符串是不可变的,所以字符串的长度也不可变 字符串的length属性不会在for/in循环中枚举,也不能通过 ...
- DUMP102 企业级电商FE
101 完成 webpack 配置后,有一套类似 live-reload 自动刷新提供 REPL 环境. [配置 webpack.config.js 别名,方便 js 文件做require 支持路径别 ...
- div宽高不确定,内容居中
当div的宽高不确定时候,内容居中:// 加在父级div中 垂直居中:align-items:center; display: -webkit-flex;水平居中:justify-content:ce ...
- 深入浅出UE4网络
UE4中的官方文档结构比较混乱,且有部分错误,不方便学习.笔者试图通过本文,整理出一篇关于UE4网络的文章,方便朋友们对UE4中的网络同步部分的认识,并有进一步理解.如有讲得不清楚明白的地方,还望批评 ...
- 用juery的ajax方法调用aspx.cs页面中的webmethod方法
首先在 aspx.cs文件里建一个公开的静态方法,然后加上WebMethod属性. 如: [WebMethod] public static string GetUserName() { //.... ...