2
斯卡拉版本2.12.1-20161205-201300-2787b47呼叫`ConcurrentLinkedQueue.poll`對空隊列似乎返回0,而不是空
val max = 20
val queue = new java.util.concurrent.ConcurrentLinkedQueue[Int]()
(1 to 10).foreach(queue.offer)
def show(c: Int): Unit = {
val e = queue.poll()
if(c < max && e != null) {
println(e)
show(c + 1)
}
}
show(0)
REPL輸出
1
2
3
4
5
6
7
8
9
10
0
0
0
0
0
0
0
0
0
0
發生了什麼?
您不能將'null'賦值給'Int'(它不是引用類型)。所以,它將它轉換爲0.一般來說,scala中不鼓勵使用null。這是它的原因之一。你正在用scala語法編寫java代碼,它不是很有用。進入斯卡拉思維模式。 – Dima
@Dima有沒有可以替代'ConcurrentLinkedQueue'的scala? – jilen