Scala类型 11: Upper Bounds & Lower Bounds

类型变量界定:


Uper Bound(上界):

Java泛型中,对于类型 T’ 是类型 T 的子类型的描述为:

< T' extends T >
<* 或用通配符形式 *>
< ? extends T >

注:此处extends 并不是一个动词-Java中继承;可以理解为描述性词汇,T’T 的子类。

Scala中,引入操作符’<: ‘:

[ T' <: T ]
<* 或用通配符形式 *>
[ _ <: T ]

适用场景:泛型对象作为数据提供者(生产者)

def func[T <: Any] (lst: List[T]): List[T] = { lst.foreach(println);lst }
// 或
def func (lst: List[_ <: Any]): List[_ <: Any] = { lst.foreach(println);lst }

Lower Bound(下界):

Java泛型中,TT’的父类的描述为:

< T super T' >
<* 或通配符形式 *>
< ? super T >

Scala中,引入操作符’:> ‘:

[ T >: T' ]
<* 或通配符形式 *>
[ _ >: T' ]

使用场景:泛型对象作为数据使用者(消费者)

def func[T >: String] (buffer: ListBuffer[T]): ListBuffer[T] = { buffer.append(",");buffer }
// 或
def func (buffer: ListBuffer[_ >: String]): ListBuffer[_ >: String] = { buffer.append(",");buffer }

转载于:https://my.oschina.net/sean1984/blog/391009

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值