首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Buffer[String]不能从Buffer[AnyRef]继承

为什么Buffer[String]不能从Buffer[AnyRef]继承
EN

Stack Overflow用户
提问于 2013-06-19 17:39:27
回答 1查看 125关注 0票数 2
代码语言:javascript
复制
class Test1(buf:Buffer[AnyRef])
class Test2(buf:Buffer[String]) extends Test(buf) 

编译器错误:

代码语言:javascript
复制
type mismatch; 
found : scala.collection.mutable.Buffer[String] 
required:  scala.collection.mutable.Buffer[Any] 
Note: org.msgpack.type.Value <: Any, but trait Buffer is invariant in type A. You may wish to investigate a wildcard type such as `_ <: Any`. (SLS 3.2.10)
EN

回答 1

Stack Overflow用户

发布于 2013-06-19 18:02:05

简而言之:不能向Buffer[String]添加AnyRef

代码语言:javascript
复制
val b: Buffer[AnyRef] = Buffer[String]()
b += new Object // ???

Buffer[String]不能为Buffer[AnyRef],因为Buffer[T]在类型参数T上不是协变的。不能将其声明为协变(Buffer[+T]),因为在逆变位置使用了T (例如,在+=方法中)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17187916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档