Проблема в том, что вы понимаете объекты против примитивов.
Больше всего на свете вам нужно признать, что заглавные имена - это классы объектов, которые действуют как примитивы, которыедействительно необходимо только тогда, когда вам нужно отправить данные из примитивов в метод, который принимает только объекты.Ваше приведение не удалось, потому что вы пытались привести примитив (double) к объекту (Integer) вместо другого примитива (int).
Вот несколько примеров работы с примитивами против объектов:
Класс Double имеет статический метод toString ():
double d = 10.0;
// wrong
System.out.println(d.toString());
// instead do this
System.out.println(Double.toString(d));
Другие методы могут использовать операторы напрямую, а не вызывать метод.
double a = 10.0, b = 5.0;
// wrong
if( a.compareTo(b) > 0 ) { /* ... */ }
// instead you can simply do this:
if( a >= b) { /* ... */ }
int a = 0;
double b = 10.0;
// wrong
a = b.intValue();
// perform the cast directly.
a = (int)b;