2014-11-18 3 views
0

Есть ли проблемы (время запуска, конечно) при назначении Integer на int?присваивать целочисленный тип int int

int x= Integer.class.cast(parameters.get("PO_PAGE_CNT")); 

Integer Как это родительский класс и ИНТ экземпляр, я думаю, может быть, в некоторых случаях я получаю ClassCastException или другой тип исключений во время выполнения. Это правильно?

+0

Если вы используете очень старый JDK, возвращаемое значение 'cast' будет автоматически распаковываться в int, и все будет хорошо ... – JonK

+0

Вы можете просто '(int) parameters.get (" PO_PAGE_CNT ")'. Еще лучше ... Вам не нужно бросать, вы можете «int x = parameters.get (« PO_PAGE_CNT »)' –

+0

@Jonk и что будет с новыми JDK? они не могут автоматически распаковываться? так как какая версия не поддерживает эту функцию? – BzH

ответ

1

Нет, проблем нет. Целочисленные значения автоматически распаковываются в значения int и наоборот.

Однако есть одно исключение. Если parameters.get("PO_PAGE_CNT") вернется null, вы получите NullPointerException, так как нет int, эквивалентного null.

+1

Все ответы здесь верны. но поскольку вы упомянули исключение, я выбрал ваш, как правильный и более полный ответ – BzH

1

Предполагая, что parameters.get("PO_PAGE_CNT") возвращает экземпляр Integer, никаких проблем с этим назначением.

Было бы более удобным для чтения, чтобы просто написать:

int x = (Integer) parameters.get("PO_PAGE_CNT"); 

INT всегда может быть назначен Integer (бокса) и наоборот (распаковка).

1

без проблем. Существует концепция, называемая бокс и распаковка. вы можете следить за этим link.

1

Нет проблем. Вы бокс и unboxing Integer. И не будет ClassCastException, если вы распаковываете Integer в int

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