Scala 泛型:类型安全与灵活性的平衡
泛型是 Scala 中实现类型抽象的核心机制,它允许在定义类、特质、方法时使用类型参数,从而编写与具体类型无关的通用代码。Scala 泛型不仅支持类似 Java 的上下界约束,还引入了协变、逆变等独特特性,进一步增强了类型系统的灵活性。本文将全面解析 Scala 泛型的用法与高级特性。
泛型基础:类型参数的定义与使用
Scala 泛型使用方括号 [] 定义类型参数,可用于类、特质、方法等,实现代码的复用与类型安全。
泛型类
在类定义中声明类型参数,使类能处理多种类型的数据:
1 2 3 4 5 6 7 8 9 10 11 12
| class Box[T](val content: T) { def getContent: T = content }
val intBox = new Box[Int](10) val strBox = new Box[String]("hello")
println(intBox.getContent) println(strBox.getContent)
|
泛型方法
在方法中声明类型参数,使方法能独立于类的类型参数处理不同类型:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| object GenericUtils { def swap[T](array: Array[T], i: Int, j: Int): Unit = { val temp = array(i) array(i) = array(j) array(j) = temp } }
val intArray = Array(1, 2, 3) GenericUtils.swap(intArray, 0, 2) println(intArray.mkString(","))
val strArray = Array("a", "b", "c") GenericUtils.swap(strArray, 1, 2) println(strArray.mkString(","))
|