DEV Community

Paulo Porto
Paulo Porto

Posted on

Evolução da linguagem Java (parte 5)

Neste artigo damos continuidade à nossa análise histórica sobre os recursos que cada versão do Java trouxe para tornar o código mais limpo e simples para o desenvolvedor.

Se você caiu de paraquedas aqui e ainda não leu a primeira parte, clique aqui.

Java 19 e 20

As versões Java 19 e 20 não trouxeram mudanças definitivas na forma de escrever código, mas apresentaram importantes recursos em preview que abririam o caminho para grandes transformações nas versões seguintes.

Java 21

O Java 21, lançado em setembro de 2023, esta versão trouxe finalmente recursos estáveis que mudaram a forma de escrever código no dia a dia.

Entre eles estão:

  • Record Patterns
  • Pattern Matching for switch

(As Virtual Threads também foram finalizadas — sem dúvida, a melhor parte desta versão. Elas merecem um artigo dedicado apenas a elas!)

🧩 Record Patterns

Os Record Patterns permitem desconstruir objetos record diretamente em variáveis.

record Point(int x, int y) {}

// Before 21
// pattern matching for instanceof
void printPoint(Object obj) {
    if (obj instanceof Point p) {
        System.out.println("x = " + p.x() + ", y = " + p.y());
    }
}

// With 21
// record pattern
void printPoint(Object obj) {
    if (obj instanceof Point(int x, int y)) {
        System.out.println("x = " + x + ", y = " + y);
    }
}
Enter fullscreen mode Exit fullscreen mode

🧠 Pattern Matching for switch

O Pattern Matching for switch foi finalizado no Java 21.
Agora o switch pode verificar tipos e extrair valores diretamente, eliminando a necessidade de múltiplos if/else com instanceof.

// Before
static String process(Object obj) {
    if (obj instanceof String s) {
        return "String com %d caracteres".formatted(s.length());
    } else if (obj instanceof Integer i) {
        return "Número: " + i;
    } else {
        return "Outro tipo";
    }
}

// With 21
static String process(Object obj) {
    return switch (obj) {
        case String s -> "String com %d caracteres".formatted(s.length());
        case Integer i -> "Número: " + i;
        case null -> "Valor nulo";
        default -> "Outro tipo";
    };
}
Enter fullscreen mode Exit fullscreen mode

Java 22

O Java 22 não trouxe novas features finais que alterassem a forma de escrever código.

Java 23

Top comments (0)