Conversões de tipo de referência - 1

"E agora, uma pequena lição de Diego. Breve e direto ao ponto. Sobre conversões de tipo de referência."

"Vamos começar com as variáveis ​​Object. Você pode atribuir qualquer tipo de referência a essa variável ( conversão de alargamento ). No entanto, para fazer a atribuição na outra direção ( conversão de estreitamento ), você deve indicar explicitamente uma operação de conversão:"

Código Descrição
String s = "mom";
Object o = s; // o stores a String
Uma conversão de referência de alargamento típica
Object o = "mom"; // o stores a String
String s2 = (String) o;
Uma conversão de referência de estreitamento típica
Integer i = 123; // o stores an Integer
Object o = i;
Ampliando a conversão.
Object o = 123; // o stores an Integer
String s2 = (String) o;
Erro de execução!
Você não pode lançar uma referência Integer para uma referência String.
Object o = 123; // o stores an Integer
Float s2 = (Float) o;
Erro de execução!
Você não pode lançar uma referência Integer para uma referência Float.
Object o = 123f; // o stores a Float
Float s2 = (Float) o;
Conversão para o mesmo tipo. Uma conversão de referência de restrição.

" Uma conversão de referência de alargamento ou estreitamento não altera o objeto de forma alguma. A parte de estreitamento (ou alargamento) refere-se especificamente ao fato de que a operação de atribuição inclui (não inclui) verificação de tipo da variável e seu novo valor. "

"Este é o raro exemplo em que tudo está claro."

"Para evitar os erros nesses exemplostemos uma maneira de descobrir qual tipo é referenciado pela variável Object: "

Código
int i = 5;
float f = 444.23f;
String s = "17";
Object o = f;                       // o stores a Float

if (o instanceof  Integer)
{
    Integer i2 = (Integer) o;
}
else if (o instanceof  Float)
{
    Float f2 = (Float) o;            // This if block will be executed
}
else if (o instanceof  String)
{
    String s2 = (String) o;
}
3
Tarefa
Java Syntax,  nível 10lição 6
Bloqueado
Code entry
Your attention, please! Now recruiting code entry personnel for CodeGym. So turn up your focus, let your fingers relax, read the code, and then... type it into the appropriate box. Code entry is far from a useless exercise, though it might seem so at first glance: it allows a beginner to get used to and remember syntax (modern IDEs seldom make this possible).

"Você deve executar esta verificação antes de cada conversão de ampliação, a menos que tenha 100% de certeza do tipo do objeto."

"Entendi."