2014-11-25 9 views
0

Если значение Integer изнутри карты будет извлечено и помещено в новую переменную int с добавленной к ней причиной, почему оператор ++ не работает с map.get() функционировать? например, int foo = map.get(key)++;Использование ++ Унарный оператор с функцией Get Map в Java

Чтобы обойти эту проблему, я использовал

HashMap<key, Integer> map = new HashMap<key, Integer>(); 

    //Integer values are added in 

    int foo = map.get(key); 
    foo++; 

Но мне интересно, почему до примера является недопустимым аргументом. В соответствии с документацией функция Map get() возвращает значение, к которому отображается указанный ключ, или null, если эта карта не содержит сопоставления для ключа.

Получено, что возвращаемое значение не равно null, будет возвращено целое число, поэтому не следует, чтобы целое число могло быть увеличено до перехода в foo?

+1

Унарные операторы-указатели не работают с любым вызовом метода, даже если возвращаемый тип является примитивным 'int' –

+0

@Vince Emigh. Можете ли вы объяснить, почему. Я ищу что-то подробное. –

ответ

1

Посмотрите на JLS §15.14.2:

Выражение постфикса следует оператор ++ является приращение постфикса выражение.

PostIncrementExpression: 
    PostfixExpression ++ 

Результат выражения постфикса должен быть переменной [...]

Это четко определяет синтаксис выражения инкремента постфикса, а также четко говорится, что выражение postfix должно быть переменной.

Таким образом, вы просто не можете использовать оператор ++ для вызова метода.

+0

Точно, что я искал, спасибо. –

0

операторы инкремента/декремента работают только на переменных, а не на буквальных числовых значений

HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(); 
    map.put(1, 1); 

    // These will work 
    int foo = map.get(1); 
    System.out.println(foo); 
    foo++; 
    System.out.println(foo); 

    // This will not work because of the reason mentioned above 
    System.out.println(map.get(1) ++); 
+0

Чтобы создать отрицательное число, скажите 'int x = -10;' ten - это буквальный, а отрицательный знак - унарный оператор, правильно? Так что это, кажется, опровергает ваше предположение. –

+1

'get()' возвращает ссылку на объект, поэтому этот ответ вздор. – Kayaman

+0

Я пропустил писать прирост/декремент с оператором, исправил его сейчас. Кроме того, да, Kayaman, map.get() возвращает ссылку типа Value i.e. Integer, String и т. Д. Спасибо, что исправил меня –

 Смежные вопросы

  • Нет связанных вопросов^_^