错误我对Scala中的一个可调整大小的数组下面的类定义:添加@specialized标记导致“价值不是其成员”在斯卡拉
class ResizeableArray[T: Manifest](initialCapacity: Int) {
private var capacity = initialCapacity
private var arr = Array.ofDim[T](capacity)
}
这个定义工作正常,但是当我添加@specialized(Int)
专攻对于基本类型Int
,我得到以下奇怪的错误:
class ResizeableArray[@specialized(Int) T: Manifest](initialCapacity: Int) {
private var capacity = initialCapacity
private var arr = Array.ofDim[T](capacity)
}
<console>:15: error: value capacity is not a member of ResizeableArray$mcI$sp
private var arr = Array.ofDim[T](capacity)
有人能向我解释这是怎么回事呢?我正在使用Scala 2.12。
我也注意到,通过删除私人,错误消息消失,但无法弄清楚为什么。你说这个数组没有专门化,你的意思是说,对于原始变体,我没有得到Java [等于]的等价物,它仍然是Object [capacity]? – Wickoo