Странное поведение с Object.intValue () - PullRequest
0 голосов
/ 26 декабря 2011

Я борюсь с проблемой, которую я не могу понять, почему она не работает.Как передать переменную через double obj и преобразовать в int?
Почему она не работает в верхнем фрагменте кода, но работает в нижнем фрагменте кода ниже строки?

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

//Converting double to int using helper

//This doesn't work- gets error message
//Cannot invoke intValue() on the primitive type double

double doublehelpermethod = 123.65;
double doubleObj = new Double( doublehelpermethod);
System.out.println("The double value is: "+ doublehelpermethod.intValue());
//--------------------------------------------------------------------------
//but this works! Why?

Double d = new Double(123.65);
System.out.println("The double object is: "+ doubleObj);

Ответы [ 2 ]

3 голосов
/ 26 декабря 2011

double является примитивным типом, в то время как Double является обычным Java-классом. Вы не можете вызывать метод примитивного типа. Однако метод intValue() доступен для Double, как показано в javadoc

Еще немного прочтения об этих примитивных типах можно найти здесь

1 голос
/ 26 декабря 2011

Вы находитесь в верхнем фрагменте, пытаясь присвоить объект Double типу примитива, подобному этому.

double doubleObj=new Double( doublehelpermethod);

, что, конечно, будет работать из-за распаковки (преобразование типа оболочки в эквивалентный ему примитивный тип) , но с какой проблемой вы сталкиваетесь - это разыменование doublehelpermethod.

doublehelpermethod.intValue()

невозможно, поскольку doublehelpermethod является переменной типа примитива и не может быть связана с использованием точки . См. * Автобокс

...