Ошибка несовместимости типов Java между short и int. Не уверен в причине

В следующем коде у меня ошибка "возможна потеря точности найдено: инт требуется: короткий". Я понимаю, что означает ошибка, но мне просто интересно, почему я ее получаю. Конечно, функция должна возвращать тип short (я не понимаю, как может быть потеря точности, код должен возвращать 16-битное целое число). Может ли кто-нибудь прояснить для меня, почему для следующего кода требуется тип int?

static short a() {
    short[] payload = {
            100, 200, 300,
            400, 500, 600,
            700, 800, 900, 1000
    };
    short offset = 2;
    return (payload[offset - 2] << 8 & 0xff00) + (payload[offset - 1] & 0xff);
}

Спасибо!

8
задан xcvd 14 April 2012 в 22:09
поделиться