scala 泛型入门简介

什么是泛型

可以让类型作为方法,类,接口等的参数,就好比一种特殊的参数

Generics means parameterized types. The idea is to allow type
(Integer, String, … etc, and user-defined types) to be a parameter to
methods, classes, and interfaces. Using Generics, it is possible to
create classes that work with different data types.

为什么需要泛型

与java类似,如果不指定泛型,在集合中,比如Array,本质Object数组,里面各种元素都可以放,如果把不同的元素放里面,写的时候不会报错,但遍历的时候就有可能报错,比如放了整数和字符串,然后遍历的时候调用字符串的方法,恰好整数没有这个方法,就会报错.

泛型大部分时候配合集合一起使用的

Object is the superclass of all other classes and Object reference can
refer to any type object. These features lack type safety. Generics
adds that type safety feature.

泛型例子

object Test_021 {
  def main(args: Array[String]): Unit = {
    val stack = new Stack[Int]
    stack.push(1)
    stack.push(2)
    println(stack.pop())//2
    print(stack.pop())//1
  }
}
//定义泛型A
class Stack[A] {
  //规定集合元素的泛型
  private var elements: List[A] = Nil

  //规定参数泛型
  def push(x: A): List[A] = {
    elements = x :: elements
    elements
  }
  //规定返回值泛型
  def peek(): A = elements.head
  //规定返回值泛型
  def pop(): A = {
    var currentTop = peek()
    elements = elements.tail
    currentTop
  }
}

泛型名称未必是一个字母

object Test_021 {
  def main(args: Array[String]): Unit = {
    val stack = new Stack[Int]
    stack.push(1)
    stack.push(2)
    println(stack.pop())//2
    print(stack.pop())//1
  }
}
//定义泛型
class Stack[That] {
  //规定集合元素的泛型
  private var elements: List[That] = Nil

  //规定参数泛型
  def push(x: That): List[That] = {
    elements = x :: elements
    elements
  }
  //规定返回值泛型
  def peek(): That = elements.head
  //规定返回值泛型
  def pop(): That = {
    var currentTop = peek()
    elements = elements.tail
    currentTop
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值