开发者学堂课程【Scala 核心编程 - 进阶:Scala 泛型介绍和应用实例1】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9150
Scala 泛型介绍和应用实例1
内容介绍
一、泛型基本介绍
二、Scala 泛型应用案例1
三、Scala 泛型应用案例2
一、泛型基本介绍
1)如果我们要求函数的参数可以接受任意类型。可以使用泛型,这个类型可以代表任意的数据类型。
2)例如 List,在创建 List 时,可以传入整形、字符串、浮点数等等任意类型。
那是因为 List 在类定义时引用了泛型。比如在 Java中:public interface List<E> extends Collection<E>
二、Scala 泛型应用案例1
要求:
1)编写一个 Message 类
2)可以构建 Int 类型的 Message,String 类型的 Message.
3)要求使用泛型来完成设计(说明:不能使用 Any)
object GenericUse
def main(args:ArrayString):Unit=
val mes1=new StrMessage[String]("10") printin(mes1.get)
val mes2=newIntMessageInt(20) println(mes2.get)
}}
//在Scala定义泛型用T,s为泛型的引用
abstract class Message[T](s: T) {
def get:T=s
}
//子类扩展的时候,约定了具体的类型class StrMessage[Stringl(msg:String)extends Message(ms class IntMessage[Int](msgInt)extendsMessage(msg)
下面执行一下,建一个章节:
写一个测试文件,开始往里面打包:
现在讲的语法是generic,泛型:
先写第一个案例:
package com.atguigu.chapter18.generic
object GenericDemo01 {
def main(args: Array[string]): Unit = {
val intMessage = new IntMessage[Int](10) println(intMessage)
}
}
/*
编写一个 Message 类
可以构建Int类型的Message,
String类型的Message.
要求使用泛型来完成设计,(说明:不能使用Any)
*/
abstract class Message[T](s:T) {
def get = s
}
class IntMessage[Int](v:Int) extends Message(v)
执行:
这就是int类型。
如果要构建一个string类型:
package com.atguigu.chapter18.generic
object GenericDemo01 {
def main(args: Array[string]): Unit = {
val intMessage = new IntMessage[Int](10) println(intMessage)
val strMessage=
new
S
tring
M
essage
[String](“hello”)
println(
str
Message)
}
}
/*
编写一个 Message 类
可以构建Int类型的Message,
String类型的Message.
要求使用泛型来完成设计,(说明:不能使用Any)
*/
abstract class Message[T](s:T) {
def get = s
}
class S
tring
Message[S
tring
](v:S
tring
) extends Message(v)
点击执行:
这就是string类型。以上是第一个应用案例。
三、Scala 泛型应用案例2
要求
1)请设计一个EnglishClass(英语班级类),在创建EnglishClass的一个实例时,需要指定[班级开班季节(spring,autumnsummerwinter)、班级名称、班级类型]
2)开班季节只能是指定的,班级名称为string,班级类型是(字符串类型"高级班","初级班"..)或者是 Int类型(12,3等)
3)请使用泛型来完成本案例.
下面写第二个案例:
package com.atguigu.chapter18.generic
object GenericDemo0
2
{
def main(args: Array[string]): Unit = {
//使用
val class01=new EnglishClass
[
S
eason
E
num.
S
eason
E
num
,String,String]
(
S
eason
E
num
.Spring,”0705
班
”
,“高级班”)
println("class01 " + class01.classSesaon + " " class01.className + class01.classType)
}
}
/*
Scala泛型应用案例2
要求
请设计一个EnglishClass(英语班级类),在创建EnglishClass的一个实例时,需要指定[班级开班季节(spring,autumnsummerwinter)、班级名称、班级类型]
开班季节只能是指定的,班级名称为string,班级类型是(字符串类型"高级班","初级班"..)或者是 Int类型(12,3等)
请使用泛型来完成本案例.
*/
class Englishclass[A,B,c](val classsesaon: A, val className:B,val classtype:
//季节是枚举类型
coass SeasonEnum extends Enumeration {
type SeasonEnum = Value
val spring,autumn,summer,winter = value
}
点击运行:
我们也可以创建第二种类型,所有都不变,val class02 = new Englishclass[SeasonEnum.SeasonEnum,string,I nt](SeasonEnum.spring,"@707班",1)
println("class02 " + class02.classSesaon +"" + class02.clas sName + class02.classType)
点击运行:
以上就是第二个案例的讲解。