Ich schreibe Universal-Vergleich-Dienstprogramm, sollte es Typ so sicher wie möglich sein. Die Idee besteht darin, den Vergleich verschiedener Klassenobjekte zu verhindern. Zum Beispiel funktioniert das OK:Java-Typ-Parameter in der statischen Methode Kompilierzeit
Gibt es elegantere Möglichkeit, Dienstprogramm-Klasse aufzurufen, die Typ Parameter hat. Dies ist unten nicht in Ordnung, weil es Datum vergleichen werden und
compare(SomeObject.getDate(), 1); //NOT OK - compiles OK no type is passed
Methodencode int:
public static<T> int compare(T value1, T value2) {
if (value1 instanceof Time && value2 instanceof Time) {
return DateComparator.compareTimes((Time) value1, (Time) value2);
} else if (value1 instanceof Date && value2 instanceof Date) {
return DateComparator.compareDates((Date) value1, (Date) value2);
} else if (value1 instanceof Number && value2 instanceof Number) {
return NumberUtility.compare((Number) value1, (Number) value2);
} else {
//....
return 0;
}
}
}
Wie Methodenaufruf elegant wie möglich machen?
Diese Antwort könnte nützlich sein: http://stackoverflow.com/questions/16069106/how-to-compare-two-java-objects –
zuerst entfernen, dass ** ** von _UtilityClazz. vergleichen ("dd", 1); _ –
emotionlessbananas
Siehe https://github.com/jeevatkm/generic-repo/blob/master/genericComparator/src/main/java/com/myjeeva/comparator/GenericComparator.java –