0

type N is unused or used in non-specializable positions.对于具有以下签名的方法,我收到一条错误消息:

protected def offsetFrom0[@specialized(Int,Long) N](offsetFrom1 : Codec[N])(implicit N : Integral[N]) : Codec[N]

有人可以通俗地向我解释一下专业化的规则吗?

4

1 回答 1

2

注解可@specialized用于类和方法类型参数。

def gethead[@specialized(Int,Float,Double) T: Numeric](items: T*): T = items(0)
gethead(4,57,32) // Result: 4

因此,在您的情况下,您可以执行以下操作:

case class Offset[@specialized(Int, Long) N](offsetFrom1: N) {
    def offsetFrom0: N = ???
}

Offset(1).offsetFrom0
Offset(1L).offsetFrom0
于 2017-11-09T17:20:02.440 回答