11、scala类型参数】的更多相关文章

转自:http://fineqtbull.iteye.com/blog/477994#bc2364938 有位je上的同学来短信向我问起了Scala类型参数中协变.逆变.类型上界和类型下界的使用方法和原理,自己虽然也刚学不久,在主要调查了<Programing in Scala>的19章后,试着在下面做一个总结.如有错误之处还请各位指正. 先说说协变和逆变(实际上还有非变).协变和逆变主要是用来解决参数化类型的泛化问题.由于参数化类型的参数(参数类型)是可变的,当两个参数化类型的参数是继承关系…
一.类型参数1 1.介绍 类型参数是什么?类型参数其实就类似于Java中的泛型.先说说Java中的泛型是什么,比如我们有List a = new ArrayList(),接着a.add(1),没问题,a.add("2"), 然后我们a.get(1)== 2,对不对?肯定不对了,a.get(1)获取的其实是个String一"2",String---"2"怎么可能与一个Integer类型的2相等呢? 所以Java中提出了泛型的概念,其实也就是类型参数…
1.Scala的类和方法.函数都可以是泛型 2.上界:表示泛型的类型必须是某种类型或者其类型的子类,语法:<: ,对类型进行限定 3.下界:表示泛型的类型必须是某种类型或者其类型的父类,语法:>: 4.View Bounds,可以进行隐式转换,将其转换成目标类型,是上边界和下边界的加强版, 语法 T <% U,T必须是U的类型,但是又没有直接继承自U,所以要通过隐式转换操作 5.T:ClassTag,一种类型转换,编译的时候类型不够,需要通过JVM的runtime来通过运行时的获取信息…
11.1 集合元素的映射-map映射操作 11.1.1 看一个实际需求 要求:请将List(3,5,8)中所有的元素都*2,将其结果放到一个新的集合中返回,即返回一个新的List(6,10,16),请编写程序实现 11.1.2 map映射操作    11.1.3 使用传统方法 -案例演示 object boke_demo01 { def main(args: Array[String]): Unit = { /* 请将List(3,5,8) 中的所有元素都 * 2 , 将其结果放到一个新的集合中…
介绍 类型参数是什么?类型参数其实就类似于Java中的泛型.先说说Java中的泛型是什么,比如我们有List a = new ArrayList(),接着a.add(1),没问题,a.add("2"),然后我们a.get(1) == 2,对不对?肯定不对了,a.get(1)获取的其实是个String——"2",String——"2"怎么可能与一个Integer类型的2相等呢? 所以Java中提出了泛型的概念,其实也就是类型参数的概念,此时可以用泛…
1.泛型类 2.泛型函数 3.上边界Bounds 4.下边界Bounds 5.View Bounds 6.Context Bounds 7.Manifest Context Bounds 8.协变和逆变 1.泛型类 泛型类,是在类的声明中,定义一些泛型类型,然后在类内部,比如field或者method,就可以使用这些泛型类型. 使用泛型类,通常是需要对类中的某些成员,进行统一的类型限制,这样可以保证程序更好的健壮性和稳定性. 如果不使用泛型进行限制,在后期程序运行过程中,可能传入不希望的类型,导…
package com.yz9 import org.junit.Test import scala.collection.mutable.ListBuffer class test { @Test def test1(): Unit ={ val abc = new Abc[String,Int]("小明",20) println(abc.name) println(abc.age) } @Test def test2(): Unit ={ val list = ListBuffer…
转载自  fineqtbull   http://fineqtbull.iteye.com/blog/477994 有位je上的同学来短信向我问起了Scala类型参数中协变.逆变.类型上界和类型下界的使用方法和原理,自己虽然也刚学不久,在主要调查了<Programing in Scala>的19章后,试着在下面做一个总结.如有错误之处还请各位指正. 先说说协变和逆变(实际上还有非变).协变和逆变主要是用来解决参数化类型的泛化问题.由于参数化类型的参数(参数类型)是可变的,当两个参数化类型的参数…
前情回顾 了解Scala反射介绍了反射的基本概念以及运行时反射的用法, 同时简单的介绍了一下编译原理知识, 其中我感觉最为绕的地方, 就属泛型的几种使用方式了. 而最抽象的概念, 就是对于符号和抽象树的这两个概念的理解. 现在回顾一下泛型的几种进阶用法: 上界 <: 下界 >: 视界 <% 边界 : 协变 +T 逆变 -T 现在想想, 既然已经有了泛型了, 还要这几个功能干嘛呢? 其实可以类比一下, 之前没有泛型, 而为什么引入泛型呢? 当然是为了代码更好的服用. 想象一下, 本来一个方…
前情回顾 上一节, 我简单的说了一下反射的基本概念以及运行时反射的用法, 同时简单的介绍了一下编译原理知识, 其中我感觉最为绕的地方, 就属泛型的几种使用方式了. 而最抽象的概念, 就是对于符号和抽象树的这两个概念的理解. 现在回顾一下泛型的几种进阶用法: 上界 <: 下界 >: 视界 <% 边界 : 协变 +T 逆变 -T 现在想想, 既然已经有了泛型了, 还要这几个功能干嘛呢? 其实可以类比一下, 之前没有泛型, 而为什么引入泛型呢? 当然是为了代码更好的服用. 想象一下, 本来一个…