Я подозреваю, что это ArrayDeque<Integer>
, верно?
Когда у вас есть:
int z = y.get();
Это все равно что сказать:
int z = ((Integer) y.get()).intValue();
Просто используйте:
Integer z = y.get();
вместо.Затем вы можете проверить, является ли z
нулевым.С другой стороны, если y.get()
уже вернул ненулевое значение, я удивляюсь, если это , тогда возвращает значение null
- вы ожидаете, что оно будет возвращать одно и то же дважды,право?Вовлечены ли другие потоки?
Кроме того, неясно, что вы подразумеваете под этим:
Проблема в том, что y.get()
уже возвращает значение, которое не присвоено какой-либо переменной, таким образом, дает исключение нулевого указателя.
Я не вижу, где здесь "таким образом" ... нормально вызывать метод, а не сохранять возвращаемое значение в переменной.Если это выбрасывает NullPointerException
, это действительно означает, что y
равно нулю.Конечно, все это будет легче диагностировать, если вы опубликуете короткую, но полную программу, демонстрирующую проблему.
Кстати, неясно, почему вы сначала звоните y.get()
дважды,Я бы перестроил код так:
void B()
{
Integer z = y.get();
if (z != null)
{
// Use z
}
}
Вы действительно хотите вызвать его дважды?