Allzweck-StringConverter-Klasse, die Generika in Java8 verwendet

was ist das

Betriebsumgebung

Inhalt der Klasse

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));
		}

	}

Wie benutzt man

Ich habe es geschrieben, weil ich es brauchte, aber ich habe vergessen, was für eine Situation es war, weil es zu viel Platz gab.

String hoge = StringConverter<Die Klasse, die Sie konvertieren möchten(Bitte definieren Sie es in Konvertern)>.convert(obj);

Danach hatte ich keine Chance mehr, den generischen Typ zu verwenden, also wollte ich ihn verwenden.

Es tut mir leid, wenn ich viele Fehler gemacht habe.

Recommended Posts

Allzweck-StringConverter-Klasse, die Generika in Java8 verwendet
Schreiben einer Klasse, die in Java bestellt werden kann Ein kleines Standard-Memo
[MQTT / Java] Implementierte eine Klasse, die Pub / Sub von MQTT in Java ausführt
Java-Versionsnotation, die sich in Java 10 ändert
StringBuffer- und StringBuilder-Klasse in Java
Was ist eine Klasse in der Java-Sprache (3 /?)
Was ist eine Klasse in der Java-Sprache (1 /?)
Was ist eine Klasse in der Java-Sprache (2 /?)
Erstellen einer Matrixklasse in Java Teil 1
[Java] Generika
[Java] Implementieren Sie eine Funktion, die eine im Builder-Muster implementierte Klasse verwendet
[Java] Wo befindet sich die Implementierungsklasse der Annotation, die in BeanValidation vorhanden ist?
Java, das eine Datei im Vmg-Format im EML-Format ausgibt
GetInstance () aus einer @ Singleton-Klasse in Groovy aus Java
Java-Methodenaufruf von RPG (Methodenaufruf in eigener Klasse)
So erhalten Sie eine Klasse von Element in Java
Eine Bat-Datei, die Java in Windows verwendet
Java-Klassenmethoden
[Java] Klassenvererbung
Java Generics Zusammenfassung
Java-Scanner-Klasse
Partisierung in Java
Java HashMap-Klasse
[Java] Generics-Beispiel
Java Generics (Hinweise)
Java (abstrakte Klasse)
Änderungen in Java 11
Janken in Java
[Java] Verschachtelte Klasse
Über die Java-Klasse
Java Allzweckmethode, die nur die Unterschiede zwischen den Eigenschaften von Objekten derselben Klasse abruft
[Java] Abstrakte Klasse
Umfangsrate in Java
[Java] Objektklasse
FizzBuzz in Java
Ein kurzer Überblick über Java, das in Klasse 4 gelernt wurde
Durchsuchen Sie Klassenobjekte in Kotlin (anstelle der Java-Klasse name.class).
Schreiben Sie eine Klasse in Kotlin und nennen Sie sie in Java
Dies und das zum Bearbeiten von ini in Java. : inieditor-java
Ein kurzer Überblick über Java, das in Klasse 3 gelernt wurde
Ein kurzer Überblick über Java, das in Klasse 2 gelernt wurde
Verwendung von Abstract Class und Interface in Java richtig
Fassen Sie die zusätzlichen Elemente der optionalen Klasse in Java 9 zusammen
Die Geschichte, dass .java auch in Unity 2018 erstellt wurde
Eine Bibliothek, die mehrzeilige Zeichenfolgen in mehrzeiligen Java-Zeichenfolgen realisiert