Classe StringConverter à usage général qui utilise des génériques dans Java8

Qu'est-ce que c'est ça

Environnement d'exploitation

Contenu de la classe

StringConverter.java


	private static class StringConverter<T> {

		private static final List<StringConverter<?>> converters = Arrays.asList(
				new StringConverter<>(String.class, String::toString),
				new StringConverter<>(BigDecimal.class, BigDecimal::toPlainString),
				new StringConverter<>(Date.class, Date::toString)
		);

		private final Class<T> clazz;
		private final Function<T, String> converter;

		static String convert(final Object object) {
			if(object == null){
				return null;
			}
			return converters.stream().filter(c -> c.isApplicable(object)).map(c -> c.doConvert(object)).findFirst()
					.orElseThrow(() -> new IllegalArgumentException("Unexpected class:" + object.getClass().getName()));
		}

		private StringConverter(final Class<T> clazz, final Function<T, String> converter) {
			this.clazz = clazz;
			this.converter = converter;
		}

		private boolean isApplicable(final Object object) {
			return clazz.isInstance(object);
		}

		private String doConvert(final Object object) {
			return converter.apply(clazz.cast(object));
		}

	}

Comment utiliser

Je l'ai écrit parce que j'en avais besoin, mais j'ai oublié de quel genre de situation il s'agissait parce qu'il y avait trop d'espace.

String hoge = StringConverter<La classe que vous souhaitez convertir(Veuillez le définir dans les convertisseurs)>.convert(obj);

Après cela, je n'ai pas eu la chance d'utiliser le type générique, donc je voulais l'utiliser.

Je suis désolé si j'ai fait beaucoup d'erreurs.

Recommended Posts

Classe StringConverter à usage général qui utilise des génériques dans Java8
Ecrire une classe qui peut être ordonnée en Java Un petit mémo standard
[MQTT / Java] Implémentation d'une classe qui fait Pub / Sub de MQTT en Java
Notation de version Java qui change dans Java 10
Classe StringBuffer et StringBuilder en Java
Qu'est-ce qu'une classe en langage Java (3 /?)
Qu'est-ce qu'une classe en langage Java (1 /?)
Qu'est-ce qu'une classe en langage Java (2 /?)
Création d'une classe de matrice dans Java Partie 1
[Java] Génériques
[Java] Implémenter une fonction qui utilise une classe implémentée dans le modèle Builder
[Java] Où est la classe d'implémentation de l'annotation qui existe dans BeanValidation?
java qui génère un fichier au format vmg au format eml
GetInstance () à partir d'une classe @Singleton dans Groovy à partir de Java
Appel de méthode Java depuis RPG (appel de méthode dans sa propre classe)
Comment obtenir une classe depuis Element en Java
Un fichier bat qui utilise Java dans Windows
Méthodes de classe Java
[Java] Héritage de classe
Résumé des génériques Java
classe Scanner java
Partition en Java
Classe Java HashMap
[Java] Exemple de génériques
Génériques Java (Notes)
java (classe abstraite)
Changements dans Java 11
Janken à Java
[Java] Classe imbriquée
À propos de la classe Java
Java Méthode à usage général qui récupère uniquement les différences entre les propriétés des objets de la même classe
[java] Classe abstraite
Taux circonférentiel à Java
[Java] Classe d'objets
FizzBuzz en Java
Un examen rapide de Java appris en classe part4
Parcourir les objets de classe dans Kotlin (au lieu de Java class name.class)
Ecrire une classe en Kotlin et l'appeler en Java
Ceci et cela pour éditer ini en Java. : inieditor-java
Un examen rapide de Java appris en classe part3
Un examen rapide de Java appris en classe part2
Utilisation correcte de la classe abstraite et de l'interface en Java
Récapitulez les éléments supplémentaires de la classe Optional dans Java 9
L'histoire que .java est également construite dans Unity 2018
Une bibliothèque qui réalise des chaînes multilignes en chaîne multiligne Java