Méthode d'interface par défaut des nouvelles fonctionnalités de Java 8

JAVA8 est sorti depuis longtemps, et il ne fait aucun doute que java8 est la version la plus importante depuis java5 (sortie en 2004). Celles-ci incluent de nouvelles fonctionnalités dans les langages, les compilateurs, les bibliothèques, les outils et JVM. La liste des nouvelles fonctionnalités de Java 8 est la suivante:

Interface par défaut méthode
interface fonctionnelle Référence de méthode d'
expression Lambda Stream Classe facultative Date API Base64 annotations répétées et annotations de type 01 méthode par défaut de l'interface 1. Quelle est la méthode par défaut de l'interface À partir de Java 8, le programme permet à l'interface d'inclure des méthodes avec des implémentations spécifiques, Utilisez la modification par défaut, ce type de méthode est la méthode par défaut. Vous pouvez ajouter plusieurs méthodes par défaut à l'interface et Java 8 fournit de nombreuses méthodes par défaut d'interface correspondantes.








2. Les avantages de la conception de méthodes d'interface par défaut. L'avantage d'
utiliser la programmation d'interface est que le développement est orienté vers l'abstraction plutôt que vers la programmation spécifique, ce qui rend le programme très flexible. L'inconvénient est que lorsque l'interface doit être modifiée, toutes les implémentations doivent être modifiées à ce stade. La classe de cette interface, par exemple, avant Java 8, il n'y a pas de méthode foreach pour nos frameworks de collecte couramment utilisés. La solution à laquelle on peut généralement penser est d'ajouter de nouvelles méthodes et implémentations à l'interface appropriée dans le JDK. Depuis Java8, la méthode d'interface par défaut a été introduite. Les avantages sont évidents. Tout d'abord, le problème de compatibilité de la version précédente de Java8 est résolu. En même temps, pour le développement de notre futur programme, vous pouvez également utiliser directement la méthode d'interface par défaut dans la sous-classe d'interface. Il n'est plus nécessaire d'implémenter des méthodes d'interface de réponse dans chaque sous-classe.

3. Dans la méthode par défaut
jdk8, l'interface peut contenir des méthodes d'implémentation, qui doivent être modifiées par défaut. Ces méthodes sont appelées méthodes par défaut. La méthode par défaut doit fournir une implémentation dans l'interface et peut être réécrite si nécessaire dans la classe d'implémentation. La méthode par défaut ne peut être appelée que dans la classe d'implémentation ou via l'objet de classe d'implémentation. Remarque: lorsque la même méthode par défaut existe dans plusieurs interfaces parentes, la classe enfant hérite selon le principe de proximité.

interface publique IMathOperation {
/ **

  • Définition de la méthode par défaut de l'interface pour prendre en charge les paramètres de méthode
    * /
    default void print () {
    System.out.println ("Ceci est l'interface de base pour les opérations numériques ...");
    }
    }
    4. Méthodes
    statiques Les méthodes statiques sont des méthodes modifiées par statique. La page de méthode statique dans l'interface doit également être implémentée, fournissant un moyen d'appeler des méthodes directement via l'interface.

interface publique IMathOperation {
/ **

  • Définissez la méthode par défaut de l'interface pour prendre en charge le paramètre de méthode
    * /
    default void print () {
    System.out.println ("Ceci est l'interface de base pour les opérations numériques ...");
    }

    / **

  • Définir la méthode statique par défaut
    * /
    static void version () {
    System.out.println ("Ceci est une simple calculatrice de la version 1.0");
    }
    }
    5. Utilisez la méthode par défaut de l'interface pour
    définir l'interface IMathOperation et fournir la méthode d'impression par défaut

interface publique IMathOperation {
/ **

  • Définissez la méthode par défaut de l'interface pour prendre en charge le paramètre de méthode
    * /
    default void print () {
    System.out.println ("Ceci est l'interface de base pour les opérations numériques ...");
    }

    / **

  • Définir la méthode statique par défaut
    * /
    static void version () {
    System.out.println ("Ceci est une simple calculatrice de la version 1.0");
    }
    / **
  • Méthode d'addition entière
  • @param
  • @param b
  • @return
    * /
    int add public (int a, int b);
    }
    mise en œuvre Sous -
    définition MathOperationImpl met en œuvre l'interface IMathOperation

Comme vous pouvez le voir ici, vous pouvez choisir d'implémenter la méthode par défaut de l'interface lorsque vous implémentez l'interface IMathOperation (ou ne l'implémentez pas, utilisez-la directement dans la méthode de sous-classe).

public class MathOperationImpl implémente IMathOperation { br /> @ Override
public int add (int a, int b) {
// les sous-classes peuvent appeler directement la méthode par défaut de l'interface de classe parent
IMathOperation.super.print ();
// appeler la classe parente static default Méthode
IMathOperation.version ();
return a + b;
}
}
02 Plusieurs situations de méthode par défaut
Utilisez Java 8 pour développer des applications. Lorsqu'une sous-classe implémente plusieurs interfaces, il peut y avoir plusieurs méthodes par défaut pour la définition de la méthode par défaut de l'interface et l'interface La méthode par défaut peut avoir le même nom. À l'heure actuelle, trois principes sont généralement suivis lors de l'implémentation ou de l'appel de sous-classes:

1. La méthode de la classe a la priorité la plus élevée

2. Si le premier élément ne peut pas être jugé, alors la priorité de la sous-interface est plus élevée: lorsque la signature de fonction est la même, l'interface avec l'implémentation la plus spécifique de la méthode par défaut est préférée, c'est-à-dire que si B hérite de A, alors B est plus spécifique que A

3. Si elle ne peut toujours pas être jugée, la classe qui hérite de plusieurs interfaces doit afficher la couverture et appeler la méthode souhaitée, et choisir explicitement l'implémentation de méthode par défaut à utiliser

L'exemple de code est le suivant:

/ **

  • Définissez l'interface du téléphone et indiquez la méthode d'information par défaut
    * /
    interface publique Phone {
    default void info () {
    System.out.println ("This is a phone");
    }
    }
    / **
  • Définissez la sous-interface MiPhone et héritez de l'interface parent du téléphone et fournissez également la méthode info
    * /
    interface publique MiPhone extend Phone {
    default void info () {
    System.out.println ("This is a Xiaomi phone");
    }
    }
    / **
  • Implémenter l'interface Phone MiPhone
    * /
    classe publique M2sPhone implémente Phone, MiPhone {
    public static void main (String [] args) {
    new M2sPhone (). Info ();
    }
    }
    Résultat d'impression:
    Ceci est un téléphone Xiaomi

jdk8 est sorti depuis longtemps, et il ne fait aucun doute que java8 est la version la plus importante depuis java5 (sortie en 2004). Celles-ci incluent de nouvelles fonctionnalités dans les langages, les compilateurs, les bibliothèques, les outils et JVM.

Je suppose que tu aimes

Origine blog.51cto.com/14966610/2542497
conseillé
Classement