Maison  >  Article  >  Java  >  La différence et la connexion entre les classes génériques et les interfaces génériques en Java

La différence et la connexion entre les classes génériques et les interfaces génériques en Java

王林
王林original
2024-04-13 09:09:02401parcourir

La différence entre une classe générique et une interface est qu'une classe générique crée un objet, déclare des données membres et est une classe extensible ; une interface générique déclare des méthodes, n'a pas de données membres et ne peut qu'étendre l'interface. Comment ils sont liés : les deux vous permettent de créer du code qui fonctionne avec plusieurs types et de vérifier la sécurité des types.

Java 中的泛型类和泛型接口的区别与联系

La différence et la connexion entre les classes génériques et les interfaces génériques en Java

Classes génériques

Les classes génériques vous permettent de créer des classes avec des paramètres de type, afin que vous puissiez gérer différents types de données. Effectuer des opérations. Les classes génériques sont déclarées en suivant le nom de la classe avec des crochets a8093152e673feb7aba1828c43532094 et les paramètres de type. Par exemple : a8093152e673feb7aba1828c43532094 和类型参数来声明。例如:

class MyGenericClass<T> {
    private T value;
    
    // ... 省略其他代码
}

泛型类可以与任何类型一起使用,就像非泛型类一样。但是,泛型类在编译时会检查类型参数的类型安全性。

泛型接口

泛型接口与泛型类类似,但它们声明接口而不是类。泛型接口允许你创建具有类型参数的接口,从而可以与各种类型的数据一起使用。泛型接口通过在接口名称后加上尖括号 a8093152e673feb7aba1828c43532094 和类型参数来声明。例如:

interface MyGenericInterface<T> {
    T getValue();
    void setValue(T value);
}

泛型接口可以与任何类型一起使用,就像非泛型接口一样。但是,泛型接口在编译时也会检查类型参数的类型安全性。

区别

泛型类和泛型接口的主要区别在于:

  • 泛型类创建对象,而泛型接口声明方法。
  • 泛型类声明数据成员,而泛型接口不声明数据成员。
  • 泛型类可以扩展其他泛型类或非泛型类,而泛型接口只能扩展其他泛型接口。

联系

泛型类和泛型接口都有以下共同点:

  • 它们允许创建可与各种类型一起使用的代码。
  • 它们在编译时都会检查类型参数的类型安全性。
  • 它们可以与任何类型一起使用,就像非泛型类和接口一样。

实战案例

下面是一个使用泛型类和泛型接口的示例:

public class Main {
    public static <T> void printList(List<T> list) {
        for (T item : list) {
            System.out.println(item);
        }
    }
    
    public static void main(String[] args) {
        List<String> list1 = new ArrayList<>();
        list1.add("Hello");
        list1.add("World");
        
        printList(list1);
    }
}

在此示例中,printList 方法是一个泛型方法,它可以与任何类型的列表一起使用。方法的类型参数 Trrreee

Les classes génériques peuvent être utilisées avec n'importe quel type, tout comme les classes non génériques. Cependant, les classes génériques vérifient la sécurité des paramètres de type au moment de la compilation. 🎜🎜🎜 Interfaces génériques 🎜🎜🎜 Les interfaces génériques sont similaires aux classes génériques, mais elles déclarent des interfaces au lieu de classes. Les interfaces génériques vous permettent de créer des interfaces avec des paramètres de type pouvant être utilisés avec différents types de données. Les interfaces génériques sont déclarées en suivant le nom de l'interface avec des crochets a8093152e673feb7aba1828c43532094 et les paramètres de type. Par exemple : 🎜rrreee🎜 Les interfaces génériques peuvent être utilisées avec n'importe quel type, tout comme les interfaces non génériques. Cependant, les interfaces génériques vérifient également la sécurité des paramètres de type au moment de la compilation. 🎜🎜🎜Différence🎜🎜🎜La principale différence entre les classes génériques et les interfaces génériques est la suivante : 🎜
  • Les classes génériques créent des objets, tandis que les interfaces génériques déclarent des méthodes.
  • Les classes génériques déclarent des données membres, tandis que les interfaces génériques ne déclarent pas de données membres.
  • Les classes génériques peuvent étendre d'autres classes génériques ou classes non génériques, tandis que les interfaces génériques ne peuvent étendre que d'autres interfaces génériques.
🎜🎜Contact🎜🎜🎜Les classes génériques et les interfaces génériques ont toutes deux les points communs suivants : 🎜
  • Elles permettent la création de code pouvant être utilisé avec une variété de types.
  • Ils vérifient tous la sécurité des paramètres de type au moment de la compilation.
  • Ils peuvent être utilisés avec n'importe quel type, tout comme les classes et interfaces non génériques.
🎜🎜Cas pratique🎜🎜🎜Voici un exemple d'utilisation d'une classe générique et d'une interface générique : 🎜rrreee🎜Dans cet exemple, la méthode printList est une méthode générique , qui peut être utilisé avec tout type de liste. Le paramètre de type T de la méthode permet à la méthode d'accepter une liste avec des éléments de n'importe quel type. En raison des contrôles de sécurité des types pour les paramètres de type, les méthodes ne peuvent être transmises que dans des listes, et non dans des collections d'autres types. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn