Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo instanceof

Diferenças entre o Java 11 e Java 17 - Pattern matching for instanceof e mais

    Diferenças entre Java 11 e 17 - Pattern matching for instanceof e mais Neste terceiro post vamos falar sobre Pattern matching for instanceof e algumas melhorias a mais . Caso não tenha acompanhado a primeira e segundas partes, acesse aqui   e aqui . Pattern matching for instanceof Freqüentemente, é necessário verificar se um objeto é de um certo tipo e, quando for, a primeira coisa a fazer é converter o objeto para uma nova variável desse certo tipo. Um exemplo pode ser visto no seguinte código: private static void oldStyle () { Object o = new GrapeClass( Color . BLUE , 2 ); if ( o instanceof GrapeClass ) { GrapeClass grape = ( GrapeClass ) o ; System . out .println( "This grape has " + grape .getNbrOfPits() + " pits." ); } } O resultado é: This grape has 2 pits. Com " pattern matching for instanceof ", o exemplo acima pode ser reescrito da seguinte maneira. Como você pode ver, é possível criar a variável na instância

Java 16 - Pattern Matching for instanceof

  Java 16 - Pattern Matching for instanceof Este é mais um recurso introduzido no Java 14 como preview e continuou assim até ser liberado definitivamente no Java 16 . O objetivo é deixar o instanceof mais simples e seguro uma vez que o “ cast” é feito em tempo de compilação. Mas não é apenas isso... public class Animal {   public void dizerOla (Animal animal) {       if (animal instanceof Cao cao) {           cao.latir();       } else if (animal instanceof Gato gato) {           gato.miar();       }   } } Ainda podemos utilizar expressões mais complexas para validar a instância } else if (animal instanceof Gato gato && gato.getIdade() > 5) { Neste caso, podemos ter algumas restrições quanto às expressões após o instanceof . Por exemplo, não podemos utilizar a expressão ||. A explicação para isso é que por causa da semântica do operador ||, a variável padrão gato pode não ter sido atribuída e, portanto, a análise de fluxo determina que a vari