【发布时间】:2016-05-17 11:47:22
【问题描述】:
我正在编写通用比较实用程序,它应该尽可能是类型安全的。想法是防止比较不同的类对象。例如,这可以正常工作:
UtilityClazz.<String>compare("dd", 1); //OK - compile time error
有没有更优雅的方式来调用具有类型参数的 Utility 类。下面这个不行,因为它会比较 Date 和 int
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;
}
}
}
如何让方法调用尽可能优雅?
【问题讨论】:
-
首先从 UtilityClazz 中删除该
。 compare("dd", 1); -
问题更多是关于你将如何做而不是关于泛型。
标签: java generics types compile-time