Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Угадай где НПЕ, или где у вас чуйка? Java
#1
[src=#java]package jds.izen;

import java.util.HashMap;
import java.util.Map;

/**
* @author VISTALL
* @date 0:22/16.10.2011
*/
public class GenericTest
{
public static void main(String... arg)
{
Map<Integer, Long> v = new HashMap<Integer, Long>();
v.put(1, 0L);

Long val = v.isEmpty() ? 0 : v.get(2);

System.out.println(val);
}
}
[/src]


Бывает есть НПЕ, бывает нет. Но НПЕ на линии

[src=java]Long val = v.isEmpty() ? 0 : v.get(2);[/src]

Трейс

Цитата:Exception in thread "main" java.lang.NullPointerException
at jds.izen.GenericTest.main(GenericTest.java:17)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Ответ
#2
Код:
java.util.Map.get(Object key)
...
Throws:
...
NullPointerException - if the specified key is null and this map does not permit null keys (optional)
Ответ
#3
hex1r0 Написал:
Код:
java.util.Map.get(Object key)
...
Throws:
...
NullPointerException - if the specified key is null and this map does not permit null keys (optional)

неаBig Grin пойдем дальше

Добавлено через 1 минуту
лог ошибки показан, там нету Сообщения об ошибке
Ответ
#4
оператор
Код:
x ? y : null
?
Ответ
#5
O = x ? : y : null


O будет null Big Grin
Ответ
#6
проблема в том что значение 0 в тернарном операторе прсится как примитив, соответсетвенно null из мапы туда же кастится по условию работы тернарного оператора, отсюда и грабли. Фикс будет такой:

public static void main(String... arg)
{
Map<Integer, Long> v = new HashMap<Integer, Long>();
v.put(1, 0L);

Long val = v.isEmpty() ? Long.valueOf(0) : v.get(2);

System.out.println(val);
}
Кто же мы? Сколько небес сожгли...
Ответ
#7
............
Ответ
#8
JavaDev Написал:проблема в том что значение 0 в тернарном операторе прсится как примитив, соответсетвенно null из мапы туда же кастится по условию работы тернарного оператора, отсюда и грабли. Фикс будет такой:

public static void main(String... arg)
{
Map<Integer, Long> v = new HashMap<Integer, Long>();
v.put(1, 0L);

Long val = v.isEmpty() ? Long.valueOf(0) : v.get(2);

System.out.println(val);
}

Long может быть нулл, НПЕ никак
Ответ
#9
не ошибка. это грабли автобокса, а тернанрый опетатор на них благополучно наступает при боксе / анбоксе значений. Я бы сказал - особенность поведения

Добавлено через 1 минуту
VISTALL Написал:Long может быть нулл, НПЕ никак

не понял сути сообщения
Кто же мы? Сколько небес сожгли...
Ответ
#10
Странно, что бывает что его нет о.0
Как бы 2 элемент не задан, так что оно всегда должен быть при таком раскладе.
Что бы не было пишем
Long val;
if (v.isEmpty())
val = 0L;
else
val = v.get(2);
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Авто обновление версии Java flopix 0 920 03-31-2016, 04:49 PM
Последний пост: flopix
  Java 2 Newble 2 1,393 01-10-2016, 12:42 AM
Последний пост: Newble
  Книга -> Авторизация на сервере(java) Gawric 2 1,342 09-17-2015, 03:11 PM
Последний пост: Gawric
  Опрос - сравнение интов в Java Vetalll 10 3,646 09-06-2014, 10:49 AM
Последний пост: Zeratyl
  Наставник по Java WoWan-SM 8 2,651 04-05-2014, 12:51 AM
Последний пост: WoWan-SM
  java 6 Main 0 917 03-23-2014, 08:01 PM
Последний пост: Main
  Сборка java сервера HF Sacura 4 1,863 01-15-2014, 11:56 AM
Последний пост: Burn
  Требуется Java кодер для проекта (Antihack) PainNigga 46 9,268 11-18-2013, 10:56 PM
Последний пост: valsha
  GNU Compiler for Java Aristocrat 4 2,426 10-26-2013, 10:57 AM
Последний пост: Aristocrat
  Java учебник meX 17 3,150 07-12-2013, 11:18 AM
Последний пост: [STIGMATED]

Перейти к форуму:


Пользователи, просматривающие эту тему: 6 Гость(ей)