0
respostas

[Divertido] Desafio: hora da prática | Usage Lombok lib & Record

Decide para este desafio usar o que havia aprendido anteriormente sobre a questão do tipo especial do java record, com isso eu criar duas classes diferentes com os mesmos métodos e atributos, mas com a diferença que uma usava o lombok para criação de métodos por meio da anotação e já a outra usando do record que faz tudo automaticamente para você. ‎ ‎ ‎

Tabela da feats de cada Class

FeaturePessoa (Class)People (Record)
MutabilityMutable (has setters)Immutable (no setters)
BoilerplateUses Lombok for constructors, getters, and settersNo need for Lombok, auto-generated
Extends SerYesNo
UsageFlexible, can be modifiedBest for immutable data storage

Class Pessoa(Lombok)

package com.rickmviana.github.entity;

@lombok.AllArgsConstructor // Generates a constructor with all attributes
@lombok.NoArgsConstructor  // Generates a default (empty) constructor
@lombok.Getter             // Generates getter methods for all fields
@lombok.Setter             // Generates setter methods for all fields
public class Pessoa extends Ser { // Pessoa (Person) extends Ser (Being)

    private String name; // Person's name
    private int age;     // Person's age

    @Override
    public String toString() {
        return "Your name is " + this.getName() + " and age is " + this.getAge();
    }
}


package com.rickmviana.github.entity;

public abstract class Ser { // Abstract class representing a "Being"

    public abstract String toString(); // Abstract method to be implemented by subclasses
}

Class People(Record)

package com.rickmviana.github.entity;

public record People(
        String name,
        int age
) {
    @Override
    public String toString() {
        return "Your name is " + this.name() + " and age is " + this.age();
    }
}

Class Main

package com.rickmviana.github;

import com.rickmviana.github.entity.People;
import com.rickmviana.github.entity.Pessoa;

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        List<Pessoa> pessoas = new ArrayList<>(); // List to store Pessoa objects
        List<People> peoples = new ArrayList<>(); // List to store People objects (record)

        // Adding Pessoa instances to the list
        pessoas.add(new Pessoa("Lucas", 21));
        pessoas.add(new Pessoa("Maria", 22));

        // Adding People instances to the list
        peoples.add(new People("Jozef", 23));
        peoples.add(new People("Ricardo", 24));

        // Printing People list size and first element
        System.out.printf("People List size: %d%n", peoples.size());
        System.out.println("Nome: " + peoples.getFirst().name() + " - Idade: " + peoples.getFirst().age() + "\n");
        peoples.forEach(System.out::println); // Printing all elements in the People list
        System.out.println();

        // Printing Pessoa list size and first element
        System.out.printf("Pessoa List Size: %d%n", pessoas.size());
        System.out.println("Nome: " + pessoas.getFirst().getName() + " - Idade: " + pessoas.getFirst().getAge() + "\n");
        pessoas.forEach(System.out::println); // Printing all elements in the Pessoa list
    }
}