黑猴子的家:Scala 泛类型

1、概述

Scala和Java或C++一样,类和特质可以带类型参数。在Scala中,我们用方括号来定义类型参数,例如

class Pair[T,S](val first:T,val second:S)

以上将定义一个带有两个类型参数T和S的类。在类的定义中,你可以用类型参数来定义变量、方法参数,以及返回值的类型。

带有一个或者多个类型参数的类是泛型的。如果你把类型参数替换成实际的类型,将得到一个普通的类,比如Pair[Int,String]。
Scala 会从构造参数推断出实际类型,这让我们很省心

//这是一个Pair[Int,String]
val p = new Pair(42,”Hello Scala”) 

我们还可以自己指定类型

val p2 = new Pair[Any,Any](42,”Hello Scala”)
2、实操

类和特质都可以带类型参数,用方括号来定义类型参数,可以用类型参数来定义变量、方法参数和返回值。带有一个或多个类型参数的类是泛型。如下p1,如果实例化时没有指定泛型类型,则scala会自动根据构造参数的类型自动推断泛型的具体类型。

泛型擦除后,Type保存类型,类型擦除后,是可以找到的

class Pair1[T, S](val first: T, val second: S) {
  override def toString = "(" + first + "," + second + ")"
}

class MainPair1{
  def main(args: Array[String]): Unit = {
    //从构造参数推断类型
    val p1 = new Pair(42, "String")
    //val p3 = new Pair[Int,String](42, "String")
    //设置类型
    val p2 = new Pair[Any, Any](42, "String")
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值