Я не знаю, почему ваш код работает вообще. Вы не должны использовать Object для «double», потому что это несовместимые типы. Кроме того, тип литья int double является несовместимым. Ваш первый блок кода:
double a=1.5;
int b=(int)a;
System.out.println(b);
напечатает «1». Вы потеряете десятичные знаки. Если вы хотите просто напечатать номер до десятичной точки, тогда вы можете форматировать свой двойной при печати, и вам не нужно будет указывать тип int.
Но причина, по которой другие не работают, - это то, что вы пытаетесь использовать несовместимый тип. Странно, что вы говорите последние два блока кода
Object a=1.5;
double b=(double)a;
int c=(int)b;
System.out.println(c);
Object a=1.5;
int b=(int)(double)a;
System.out.println(b);
Они не должны работать из-за несовместимых типов.