Я пишу универсальную утилиту сравнения, она должна быть безопасной по типу. Идея состоит в том, чтобы предотвратить сравнение разных объектов класса. Например, это работает ОК:Параметр типа Java в статическом методе времени компиляции
UtilityClazz.<String>compare("dd", 1); //OK - compile time error
Есть ли более элегантный способ вызова класса Utility, который имеет параметр типа. Это ниже не в порядке, потому что он будет сравнивать даты и ИНТ
compare(SomeObject.getDate(), 1); //NOT OK - compiles OK no type is passed
Метод Код:
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;
}
}
}
Как сделать вызов метода элегантны, как это возможно?
Этот ответ может быть полезен: http://stackoverflow.com/questions/16069106/how-to-compare-two-java-objects –
сначала удалите это ** ** из _UtilityClazz. сравнить («dd», 1); _ –
emotionlessbananas
См. Https://github.com/jeevatkm/generic-repo/blob/master/genericComparator/src/main/java/com/myjeeva/comparator/GenericComparator.java –