Scala версии 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. Использование null не рекомендуется в scala вообще. Это одна из причин этого. Вы пишете Java-код в синтаксисе scala, это не очень полезно. Входите в менталитет scala. – Dima
@Dima Есть ли какая-либо альтернатива scala для ConcurrentLinkedQueue? – jilen