Да, переменная со ссылочным типом (например, Object
) может содержать ссылку на экземпляр любого совместимого с присвоением ссылочного типа.Типы ссылок, совместимые с назначениями:
- собственный тип ссылки на переменную (
Object
, в вашем примере). - любой подкласс этого типа (
Integer
в вашем примере,поскольку Integer
является подклассом Object
) - Если ссылочный тип переменной является интерфейсом, любой класс, реализующий этот интерфейс.
Иногда, кажется, код нарушает этиправила, такие как:
Object c = 0; // Works just fine
Это потому, что int
0
автоматически помещает в экземпляр Integer
, а ссылка на этот экземпляр хранится в c
.