Comment utiliser des méthodes par défaut de Java

Bien que les interfaces sont une caractéristique très utile de Java, ils ont une limite intrinsèque: Après avoir défini une interface et ensuite construire des classes qui implémentent l'interface, il n'y a pas de moyen facile de modifier l'interface en ajoutant des méthodes supplémentaires pour elle.

Par exemple, supposons que vous avez créé l'interface suivante:

interface publique jouable {de jeu void () -}

Vous construisez ensuite plusieurs classes qui implémentent cette interface. Voici un exemple simple:

Jeu de classe implémente jouable {play public void () {System.out.println ("Bonne chance!") -}}

Cette est un jeu assez inutile, bien sûr-, il affiche simplement le message “ Bonne chance ”!; chaque fois que le jouer méthode est appelée.

Maintenant, supposons que vous décidez que le Jouable l'interface devrait avoir un fonctionnalités supplémentaires - plus précisément, vous voulez ajouter la possibilité de finir le jeu en appelant une méthode nommée quitter.




Vous seriez tenté de simplement ajouter la nouvelle méthode à l'interface existante, comme ceci:

interface publique jouable {de jeu void () - vide quit () -}

Malheureusement, cela lui permet de briser le Jeu classe car il ne fournit pas une mise en œuvre de la quitter Procédé.

Vous pouvez, bien sûr, modifier le Jeu classe en ajoutant une mise en œuvre de la quitter Procédé. Mais que faire si vous avez des dizaines, voire des centaines, de classes qui implémentent écrite Jouable? Comme vous pouvez l'imaginer, une fois une interface est devenu populaire, il devient presque impossible à modifier.

Pour pallier ce problème, Java 1.8 introduit un nouveau type de méthode d'interface appelé méthode par défaut, qui fournit le code qui sera utilisé comme la mise en œuvre de la méthode pour toutes les classes qui implémentent l'interface, mais ne peuvent pas assurer une mise en œuvre de la méthode par défaut.

Ainsi, Java 8 vous permet d'ajouter en toute sécurité le quitter Procédé pour la Jouable interfacer en spécifiant comme une méthode par défaut, comme ceci:

interfacer jouable {play void () - vide par défaut quit () {System.out.println ("Désolé, cesser de fumer est interdit.") -}}

Ici, le Jouable interface spécifie que si une classe mise en œuvre ne constitue pas une mise en œuvre du quitter méthode, la méthode par défaut sera utilisé. Dans ce cas, la méthode par défaut affiche simplement le message “ Désolé, cesser de fumer est interdit ”.

Notez que l'exemple précédent ne compilera pas sur les versions antérieures de Java à 1,8. Si vous obtenez un message d'erreur lorsque vous essayez de compiler une interface qui utilise le défaut mot-clé, vérifier votre version de Java pour vous assurer que vous utilisez la version 1.8 ou ultérieure de l'exécution.

Voici un exemple complet qui utilise le Jouable interface et sa méthode par défaut:

public class TestLambdaCollection {static void main (String [] args) {publics Jeu g = new Game () - g.play () - g.quit () -}} Interface jouable {play void () - vide par défaut quit () {System.out.println ("Désolé, cesser de fumer est interdit.") -}} Jeu de classe implémente jouable {play public void () {System.out.println ("Bonne chance!") -}}

Lorsque vous exécutez ce programme, le suivant sera affiché sur la console:

Bonne chance! Désolé, cesser de fumer est interdit.

» » » » Comment utiliser des méthodes par défaut de Java