Guide des Classes Enregistrement Java : Pour les Débutants

Bonjour à vous, futurs développeurs Java !aujourd'hui, nous allons explorer une fonctionnalité excitante introduite dans Java 14 : les Classes Enregistrement. Ne vous inquiétez pas si vous êtes nouveau dans la programmation – je vais vous guider à travers ce concept étape par étape, tout comme j'ai fait pour d'innombrables étudiants au fil des années. Alors, prenez une tasse de votre boisson préférée, et plongeons-y !

Java - Record Classes

Qu'est-ce qu'un Enregistrement Java ?

Imaginez que vous collectionnez des cartes de baseball. Chaque carte contient des informations spécifiques : le nom du joueur, l'équipe et la moyenne au bâton. En Java, nous créons souvent des classes pour contenir ce genre de données. Un Enregistrement est un type spécial de classe conçu pour faire juste cela – contenir des données – mais avec beaucoup moins de code que les classes traditionnelles.

But d'un Enregistrement Java

Le but principal d'un Enregistrement Java est de simplifier la création de classes principalement utilisées pour stocker des données. C'est comme avoir un assistant à la cuisine qui prépare tous vos ingrédients avant que vous ne commenciez à cuire – les Enregistrements préparent vos données pour que vous puissiez vous concentrer sur leur utilisation dans votre programme.

Caractéristiques des Enregistrements Java

Regardons ce qui rend les Enregistrements spéciaux :

  1. Syntaxe concise : Écrivez moins, faites plus !
  2. Immutabilité : Une fois créée, les données ne peuvent pas être modifiées.
  3. Méthodes automatiques : Java crée des méthodes communes pour vous.
  4. Transparence : Ce que vous voyez est ce que vous obtenez – pas de champs cachés.

Exemple Sans Utiliser un Enregistrement Java

Avant de voir un Enregistrement en action, créons une classe traditionnelle pour notre carte de baseball :

public class BaseballCard {
private final String playerName;
private final String team;
private final double battingAverage;

public BaseballCard(String playerName, String team, double battingAverage) {
this.playerName = playerName;
this.team = team;
this.battingAverage = battingAverage;
}

public String getPlayerName() {
return playerName;
}

public String getTeam() {
return team;
}

public double getBattingAverage() {
return battingAverage;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BaseballCard that = (BaseballCard) o;
return Double.compare(that.battingAverage, battingAverage) == 0 &&
Objects.equals(playerName, that.playerName) &&
Objects.equals(team, that.team);
}

@Override
public int hashCode() {
return Objects.hash(playerName, team, battingAverage);
}

@Override
public String toString() {
return "BaseballCard{" +
"playerName='" + playerName + '\'' +
", team='" + team + '\'' +
", battingAverage=" + battingAverage +
'}';
}
}

Whew ! C'est beaucoup de code pour quelque chose d'aussi simple, non ? Maintenant, voyons comment les Enregistrements peuvent nous aider.

Exemple Utilisant un Enregistrement Java

Voici la même carte de baseball implémentée comme un Enregistrement :

public record BaseballCard(String playerName, String team, double battingAverage) {}

C'est tout ! Juste une ligne de code. Mais ne laissez pas sa simplicité vous tromper – cet Enregistrement est puissant. Il crée automatiquement :

  • Un constructeur
  • Des méthodes getter pour chaque champ
  • Les méthodes equals(), hashCode() et toString()

Utilisons notre nouveau Enregistrement :

public class BaseballCardDemo {
public static void main(String[] args) {
BaseballCard card = new BaseballCard("Babe Ruth", "New York Yankees", 0.342);

System.out.println(card.playerName());  // Sortie : Babe Ruth
System.out.println(card.team());        // Sortie : New York Yankees
System.out.println(card.battingAverage()); // Sortie : 0.342
System.out.println(card);  // Sortie : BaseballCard[playerName=Babe Ruth, team=New York Yankees, battingAverage=0.342]
}
}

Comme vous pouvez le voir, nous pouvons créer et utiliser notre Enregistrement BaseballCard tout comme une classe régulière, mais avec beaucoup moins de code !

Enregistrement Java pour les Interfaces Séparées

Les Enregistrements peuvent également implémenter des interfaces, y compris des interfaces séparées. Une interface séparée est comme un club VIP – elle contrôle les classes qui peuvent être ses membres.

Voici un exemple :

public sealed interface Athlete permits BaseballPlayer, BasketballPlayer {}

public record BaseballPlayer(String name, String team) implements Athlete {}
public record BasketballPlayer(String name, String team) implements Athlete {}

public class SportsDemo {
public static void main(String[] args) {
Athlete player1 = new BaseballPlayer("Mike Trout", "Los Angeles Angels");
Athlete player2 = new BasketballPlayer("LeBron James", "Los Angeles Lakers");

System.out.println(player1);  // Sortie : BaseballPlayer[name=Mike Trout, team=Los Angeles Angels]
System.out.println(player2);  // Sortie : BasketballPlayer[name=LeBron James, team=Los Angeles Lakers]
}
}

Dans cet exemple, seuls BaseballPlayer et BasketballPlayer peuvent implémenter l'interface Athlete.

Surcharge des Méthodes des Enregistrements Java

Bien que les Enregistrements fournissent des implémentations automatiques des méthodes communes, vous pouvez toujours les surcharger si nécessaire. Voici un exemple :

public record BaseballCard(String playerName, String team, double battingAverage) {
@Override
public String toString() {
return playerName + " joue pour " + team + " avec une moyenne au bâton de " + battingAverage;
}
}

public class BaseballCardDemo {
public static void main(String[] args) {
BaseballCard card = new BaseballCard("Babe Ruth", "New York Yankees", 0.342);
System.out.println(card);  // Sortie : Babe Ruth joue pour New York Yankees avec une moyenne au bâton de 0.342
}
}

Ici, nous avons surchargé la méthode toString() pour fournir une sortie plus lisible.

Conclusion

Les Enregistrements Java sont un outil puissant pour créer des classes simples et centrées sur les données avec un minimum de code inutile. Ils sont parfaits pour regrouper des pièces de données liées ensemble, comme dans notre exemple de carte de baseball.

N'oubliez pas, la programmation est comme apprendre à jouer d'un instrument – elle nécessite de la pratique. Alors, essayez de créer vos propres Enregistrements pour différents types de données. Peut-être créez un BookRecord ou un MovieRecord. Plus vous pratiquerez, plus vous vous sentirez à l'aise avec ce concept.

Continuez à coder, continuez à apprendre, et surtout, amusez-vous ! Qui sait, peut-être qu'un jour vous créerez un Enregistrement Java pour stocker des données sur votre propre livre de programmation best-seller. Rêvez grand, codez plus grand !

Credits: Image by storyset