Funcionario[] referencias = new Funcionario[5];
referencias[0] = new Designer();
???? ref = (????) referencias[0];
Dentro dos parênteses não seria o tipo mais específico, e a direita o tipo mais genérico ?
Na opção 4 substituindo por Object, referencias[] é mais específico, e dentro dos parênteses ficaria Object (mais genérico), logo Object não é um Funcionario, e sim Funcionario é um Object. Esta leitura, tendo como a base os parênteses está errada ? O que valeria seria a declaraçao da referência antes da atribuição ?