Génériques Java fréquemment utilisés

J'étais confus quant à l'utilisation des génériques (type générique), j'ai donc écrit un exemple que j'utilise souvent.

Je veux décider comme argument de la classe

public class Foo<T> {
    T t;
    public T get() {
        return t;
    }
    public void set(T t) {
        this.t = t;
    }
}

Lorsque vous utilisez plusieurs paramètres, séparez-les par `` Foo <T, U> '' et une virgule.

Je veux forcer une sous-classe

public class Foo<T extends Parent> {
    T t;
    public T get() {
        return t;
    }
    public void set(T t) {
        this.t = t;
    }
}

Uniquement lors de l'utilisation d'une méthode

Ce n'est pas pratique lorsque vous souhaitez prendre une décision temporaire si vous la spécifiez pour toute la classe. Par exemple, lorsque vous souhaitez convertir une liste en tableau

List list = new ArrayList<String>();
list.add("foo1");
list.add("foo2");
list.add("foo3");
String[] strList = list.toArray(new String[list.size()]);

Je pense que vous pouvez utiliser la méthode toArray comme celle-ci. La mise en œuvre à ce moment

public class Foo {
    public <T> T get(T t) {
        return t;
    }
}

À ce stade, T est déterminé en examinant le type d'argument.

Impossible de créer une instance

Sans surprise, il ne peut pas s'agir de `` nouveau T () ''. La raison est qu'il n'y a aucune garantie qu'une instance puisse être créée à moins que vous ne sachiez qui est T.

public class Foo<T extends Parent> {
    public T get() {
        return new T(); //Ne peux pas!!
    }
}

Il semble que vous puissiez utiliser le refactoring java pour créer une instance à partir de la classe Class pour réaliser un codage comme new T (), mais les performances semblent chuter considérablement.

Recommended Posts

Génériques Java fréquemment utilisés
[Java] Génériques
Résumé des génériques Java
[Java] Exemple de génériques
Commande docker-compose fréquemment utilisée
Liste des instructions Java fréquemment utilisées (pour les débutants et les débutants)
Notes d'opération fréquemment utilisées d'IntelliJ
[Java] Classe générique et méthode générique
Processus fréquemment utilisés dans SpreadSheet
java Generics T et? Différence
console de rails Opérations fréquemment utilisées
Collection de commandes Maven fréquemment utilisée
[Mémo personnel] Grammaire Java fréquemment utilisée mise à jour de temps en temps
Exemples de syntaxe couramment utilisés en Java
git flow Mémo de commande fréquemment utilisé
Méthodes fréquemment utilisées dans Active Record
Modèles de conception à utiliser avec les bibliothèques Java fréquemment utilisées - Modèle d'usine
Résumé des commandes Docker fréquemment utilisées
Efficacité de Java 3rd Edition Chapitre 5 Génériques
Java
[Java] Essayez de mettre en œuvre à l'aide de génériques
Java Generics (définit les classes et les méthodes)
Génériques Kotlin pour les développeurs Java
[Docker] Autres instructions Docker fréquemment utilisées (probablement)
Java
Pourquoi Java Vector n'est pas utilisé
[Notes personnelles] Raccourcis IntelliJ IDEA fréquemment utilisés
[Notation EMMET] Résumé de la notation Guy Emmet basique et fréquemment utilisé
[Java] Présentation du type générique de limite générique
Résumé Java des conversions de types fréquemment recherchées
À propos de la signification des variables de type, E, T, etc. utilisées dans les génériques utilisés en Java