[Java] Essayez de mettre en œuvre à l'aide de génériques

Voici quelques notes sur les implémentations utilisant Generics.

Prend Class \ <T > et renvoie un objet avec des génériques \ <T >

Si vous déclarez normalement quelque chose qui spécifie des génériques, il a tendance à être redondant, donc si vous souhaitez générer un tel objet plusieurs fois, je pense qu'il est préférable de créer une fonction de génération dans la classe Util.

Exemple d'implémentation


//Une fonction qui renvoie une liste correspondant à la classe
<T> List<T> generateList(Class<T> clazz) {
    return new ArrayList<>();
}

//Une fonction qui renvoie un BeanPropertyRowMapper qui correspond à la classe
<T> BeanPropertyRowMapper<T> getBeanPropertyRowMapper(Class<T> clazz) {
    return new BeanPropertyRowMapper<>(clazz);
}

Exemple d'utilisation


//Il est redondant d'écrire comme ça
new BeanPropertyRowMapper<Something>(Something.class);

//C'est plus facile à lire si vous écrivez comme ça
Util.getBeanPropertyRowMapper(Something.class);

Écrivez de sorte qu'aucun avertissement / erreur ne soit émis lorsque le type n'a pas d'importance

Dans le cas de "utiliser un type qui prend des génériques, mais le type du contenu n'a pas d'importance", simplement omettre le type donnera un avertissement.

Exemple d'avertissement


//Vérification en double à l'aide d'un jeu de hachage
boolean checkForDuplicate(List list) {
    return list.size() == new HashSet(list).size();
}

Dans de tels cas, vous pouvez écrire <?> Et l'opérateur diamant pour éviter les avertissements.

Exemple d'implémentation


//Vérification en double à l'aide d'un jeu de hachage
boolean checkForDuplicate(List<?> list) {
    return list.size() == new HashSet<>(list).size();
}

Vous pouvez l'écrire en le spécifiant avec «», mais ce sera un peu redondant.

Exemple d'implémentation redondante


//Vérification en double à l'aide d'un jeu de hachage
<T> boolean checkForDuplicate(List<T> list) {
    return list.size() == new HashSet<>(list).size();
}

Lors de l'utilisation de Stream

Même lors de l'exécution d'un traitement Stream avec List comme argument, la compilation peut ne pas réussir à moins que<?>Ne soit écrit.

Exemple que la compilation ne passe pas


BeanPropertySqlParameterSource[] makeParamArray(List entities) {
    return entities.stream()
            .map(BeanPropertySqlParameterSource::new)
            .toArray(BeanPropertySqlParameterSource[]::new);
}

Exemple de compilation


BeanPropertySqlParameterSource[] makeParamArray(List<?> entities) {
    return entities.stream()
            .map(BeanPropertySqlParameterSource::new)
            .toArray(BeanPropertySqlParameterSource[]::new);
}

Recommended Posts

[Java] Essayez de mettre en œuvre à l'aide de génériques
Essayez d'implémenter Yuma en Java
Essayez d'implémenter TCP / IP + NIO avec JAVA
Essayez d'utiliser RocksDB avec Java
Essayez de gratter en utilisant Java [Note]
[Java] Comment implémenter le multithreading
Essayez de mettre en œuvre à l'aide de l'API de recherche de produits Rakuten (facile)
Essayez de créer un environnement de développement Java à l'aide de Docker
Implémentez Thread en Java et essayez d'utiliser la classe anonyme Lambda
Essayez d'implémenter Yuma dans Ruby
Essayez d'implémenter la fonction Widget iOS14
Essayez d'extraire la méthode publique de java
[Java] Génériques
Essayez d'utiliser le traçage de méthode IBM Java
Essayez Spark Submit to EMR à l'aide du kit AWS SDK pour Java
Essayez d'utiliser le SDK Java d'Hyperledger Iroha
[Java] Où avez-vous essayé d'utiliser java
[Java] Essayez de résoudre le problème de Fizz Buzz en utilisant un traitement récursif
Essayez de transmettre des valeurs de Java Servlet à l'application iPhone à l'aide de JSON
Interface Essayez de créer un problème Java TypeScript 7-3
Essayez d'utiliser le framework Java Nablarch [Application Web]
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Essayez de résoudre Project Euler en Java
Essayez d'utiliser l'API Stream en Java
[Java] Comment calculer l'âge à l'aide de LocalDate
Étude de Java Essayez d'utiliser un scanner ou une carte
Essayez d'utiliser l'API au format JSON en Java
Essayez d'implémenter une fonction de connexion avec Spring-Boot
Connectez-vous de Java à MySQL à l'aide d'Eclipse
Comment appliquer les conventions de codage en Java
Essayez d'utiliser l'API REST de JobScheduler - implémentation Java RestClient--
[Swift5] Comment mettre en œuvre une animation à l'aide de "lottie-ios"
Pour implémenter la publication d'images à l'aide de rails
Essayez d'utiliser la télécommande Wii en Java
Essayez d'utiliser libGDX
Essayez d'utiliser Maven
Essayez d'utiliser powermock-mockito2-2.0.2
Essayez d'utiliser GraalVM
[Java] Exemple de génériques
Génériques Java (Notes)
Essayez Java 8 Stream
Essayez d'utiliser jmockit 1.48
Essayez d'utiliser SwiftLint
Essayez d'utiliser Log4j 2.0
[Java] Introduction à Java
Introduction à Java
Essayez grossièrement Java 9
Essayez d'utiliser Firebase Cloud Functions sur Android (Java)
Essayez d'utiliser la classe de test RestClient de JobScheduler REST-API-Java-
Essayez de créer un environnement Java 8 sur Amazon Linux2
Essayez de créer un babillard en Java
Essayez d'intégrer Ruby et Java avec Dapr
[Java] Convertit le code DB en valeur de code à l'aide d'énum
Comportement incrémenté Essayez de créer un problème Java TypeScript 3-4
Essayez d'utiliser Sourcetrail (version win) avec du code Java
Essayez d'utiliser l'API Cloud Vision de GCP en Java