为什么AtomicInteger在Kotlin中是抽象的?(它在Java中工作正常)

ice*_*000 7 java kotlin retrofit

我试图做一些与此类似的东西(实际上你不需要阅读链接来理解这个问题,它只是供参考),我写这个:

class CallArbiter: AtomicInteger { // error
  constructor(initialValue: Int) : super(initialValue)
  constructor() : super()
}
Run Code Online (Sandbox Code Playgroud)

编译器说:

错误:(8,1)Kotlin:类'CallArbiter'必须声明为abstract或实现抽象基类成员public abstract fun toByte():java.util.concurrent.atomic.AtomicInteger中定义的字节

我无法弄清楚为什么它需要我实现这些方法.我没有在AtomicInteger课堂上看到他们.Java中的一切都很好.

s1m*_*nw1 5

AtomicInteger扩展java.lang.Number,但在Kotlin中这种类型被映射kotlin.Number.

kotlin.Number这些抽象方法中定义(您可以在其API中看到):

toByte,toInt,toChar等.

如果您调试这行代码:AtomicInteger(2).toByte()您可以看到,使用该方法java.lang.Number::byteValue,这是通过使用某些编译器技术完成的.