2015-06-03 2 views
2

Мне нужно преобразовать в Integer значение, сохраненное внутри объекта Java, что было бы лучшим способом определить, какое значение содержит объект?Каков наилучший способ обнаружения примитива, хранящегося в объекте Java?

Например, когда Double хранятся в объекте я это сделать:

Double myval = 0.0; 
Object myobj = myval; 
if (myobj instanceof Double) {Double dd = (Double) myobj; converted = dd.intValue();} 

Я не знаю, если это является эффективным, или лучшим способом. Так как объект может содержать любой тип значения (Double, Integer, int, float), что было бы лучшим способом для определения примитивных значений?

Спасибо.

Редактировать: После прочтения ответов я понял, что объект не может содержать примитивы, поэтому вопрос был неправильным. Спасибо, что разъяснил это!

+0

Некоторые более справочная информация будет * * очень полезно. –

+0

Я думаю, что это возобновляет вопрос, но, конечно. Что еще нужно знать? – Brian

ответ

3

Все типы Номер объекта являются подклассами Number:

if (myobj instanceof Number) {converted = ((Number)myobj).intValue();} 
+0

Если это работает, это может быть лучшее, что я узнал на этой неделе, работает ли оно со всеми типами данных? (тестирование прямо сейчас). – Brian

+0

все примитивы в штучной упаковке, кроме булевых и символов. – jtahlborn

2

Если он содержит все различные виды номеров, вы можете использовать:

if (myobj instanceof Number) { 
    converted = ((Number) myobj).doubleValue(); 
} 

Это будет обрабатывать Byte, Short, Integer, Float , и Double, а также большинство (но не всех) значений Long (значения, превышающие ± 2 будут подлежат роумингу динь). Использование doubleValue() лучше всего, чтобы избежать усечения, которое может ввести intValue() или longValue().

Object не может хранить примитивные значения, поэтому вам не нужно их проверять. Они уже были boxed в соответствующие ссылочные типы: int к Integer, float к Float и т.д.

+0

Работает ли он с примитивами? (после редактирования: Ницца! тогда это делает задачу красиво, спасибо!) – Brian

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