scala-泛型
//实例化之后使用get方法必须传入相同类型的参数
class A[T](x: T) {
def get(x: T) {
print(x)
}
} var a1 = new A(1)
a1.get(1) //上边界泛型实现 class Persion(name: String) {
def prn = println("name:" + name) def get(p: Persion) {
prn
p.prn
}
} class Worker(name: String) extends Persion(name) {
var get1 = println("函数")
} def process[T <: Worker](p: T, p1: T) {
//[T <: Worker]要求必须在worker自己以及子类中
p.get(p1)
} def process1[T <: Persion](p: T, p1: T) {
//[T <: Persion]要求必须在Persion自己以及子类中
p.get(p1)
} def process3[T >: Persion](p: T) {
//[T >: Persion]要求必须在Persion自己以及继承的父类中
(p.asInstanceOf[Persion]).prn
if (p.getClass == classOf[Persion]) {
print("Persion!")
} else if (p.getClass == classOf[Worker]) {
print("Worker!")
} else {
print("未匹配!")
}
} var p1 = new Worker("abc")
var p2 = new Worker("mnb") process(p1, p2) var p3 = new Persion("ab1c")
var p4 = new Persion("mn1b")
process1(p3, p4) var p5 = new Persion("a8899")
var p6 = new Worker("a8899!!")
process3(p5)
process3(p6)
scala-泛型的更多相关文章
- scala泛型
		
package com.ming.test /** * scala泛型 * 类型参数测试 */ object TypeParamsTest { //泛型函数 def getMiddle[T](a:Ar ...
 - Scala泛型详解
		
在Scala中你可以使用类型参数来实现类和函数,这样的类和函数可以用于多种类型.比如Array[T] 你可以存放任意指定类型T的数据. 类.特质.函数都可以有类型参数:将类型参数放在名字后面用方括号括 ...
 - Scala泛型[T]的使用
		
package com.dtspark.scala.basics /** * 1,scala的类和方法.函数都可以是泛型. * * 2,关于对类型边界的限定分为上边界和下边界(对类进行限制) * 上边 ...
 - 17. Scala泛型、上下界、视图界定、上下文界定
		
17.1 泛型的基本介绍 17.1.1 基本介绍 1) 如果我们要求函数的参数可以接受任意类型,可以使用泛型,这个类型可以代表任意的数据类型 2) 例如List,在创建List时,可以传入整型.字符串 ...
 - 一文详解scala泛型及类型限定
		
今天知识星球球友,微信问浪尖了一个spark源码阅读中的类型限定问题.这个在spark源码很多处出现,所以今天浪尖就整理一下scala类型限定的内容.希望对大家有帮助. scala类型参数要点 1. ...
 - Scala进阶之路-Scala中的泛型介绍
		
Scala进阶之路-Scala中的泛型介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 通俗的讲,比如需要定义一个函数,函数的参数可以接受任意类型.我们不可能一一列举所有的参数类 ...
 - Scala入门到精通——第十六节 泛型与注解
		
本节主要内容 泛型(Generic Type)简单介绍 注解(Annotation)简单介绍 注解经常使用场景 1. 泛型(Generic Type)简单介绍 泛型用于指定方法或类能够接受随意类型參数 ...
 - scala的泛型浅析
		
1. scala泛型浅析 package com.dtspark.scala.basics /** * 1,scala的类和方法.函数都可以是泛型. * * 2,关于对类型边界的限定分为上边界和下边界 ...
 - Scala 基础(十六):泛型、类型约束-上界(Upper Bounds)/下界(lower bounds)、视图界定(View bounds)、上下文界定(Context bounds)、协变、逆变和不变
		
1 泛型 1)如果我们要求函数的参数可以接受任意类型.可以使用泛型,这个类型可以代表任意的数据类型. 2)例如 List,在创建 List 时,可以传入整型.字符串.浮点数等等任意类型.那是因为 Li ...
 - Scala进阶之路-Scala中的Ordered--Ordering
		
Scala进阶之路-Scala中的Ordered--Ordering 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 说道对象的比较,在Java中大家最熟悉不过的就是实现类本身实 ...
 
随机推荐
- vuex的理解
			
首先需要了解vuex的基本概念和使用方式,vue的官网也有很详细的说明或者浏览:https://zhuanlan.zhihu.com/p/24357762. vue是单页应用所以当页面刷新时vuex的 ...
 - 嵌入式Linux内时区配置
			
一般情况下,嵌入式Linux系统的时区,也是国际事件. 但是我们是属于东八区的时区,所以有一些时候要更改一下 TZ 变量可以配置时区,如下
 - Java如何查找系统的代理设置?
			
在Java编程中,如何查找系统的代理设置? 以下示例显示如何使用HttpURLConnection类的systemSetting()方法和getResponse()方法的put方法在系统上查找代理设置 ...
 - Linux磁盘概念及其管理工具fdisk
			
Linux磁盘概念及其管理工具fdisk [日期:2016-08-27] 来源:Linux社区 作者:chawan [字体:大 中 小] 引言:冯诺依曼体系中的数据存储器就是我们常说的磁盘或硬盘 ...
 - 设置gem源,解决下载慢的问题
			
问题解决的最好方法方法 使用google的DNS 8.8.8.8 / 8.8.4.4 另一种解决方式 修改rubygems的source源 $ gem source -r http://rubygem ...
 - 使用InstallAnywhere7.1制作Java exe程序安装包
			
[转[使用InstallAnywhere7.1制作Java exe程序安装包 使用InstallAnywhere7.1制作Java exe程序安装包 对于已经完成的Java应用程序开发项目,从商业化角 ...
 - ThinkingInJava 学习 之 0000003 控制执行流程
			
1. if-else 2. 迭代 1. while 2. do-while 3. for 4. 逗号操作符 Java里唯一用到逗号操作符的地方就是for循环的控制表达式. 在控制表达式的初始化和步进控 ...
 - Window应急响应(三):勒索病毒
			
0x00 前言  勒索病毒,是一种新型电脑病毒,主要以邮件.程序木马.网页挂马的形式进行传播.该病毒性质恶劣.危害极大,一旦感染将给用户带来无法估量的损失.这种病毒利用各种加密算法对文件进行加密,被 ...
 - LostRoutes项目日志——敌人精灵Enemy解析
			
Enemy类在Enemy.js中,类Enemy类继承自PhysicsSprite,以便于可以使用物理引擎中的一些特性. 原版的Enemy.js: var Enemy = cc.PhysicsSprit ...
 - 查询Array中确定数值的对象&JS linq使用 = linq.js
			
var x=new Array(); x.push({"a":3,"b":3},{"a":2,"b":2},{" ...