【发布时间】:2015-12-06 16:43:21
【问题描述】:
我想比较比较类型为 Comparable 的 less 方法中的两个参数。但是如果我使用comapreTo,它会在类型转换中给我错误:
private boolean less(Comparable<T> u, Comparable<T> v) {
return u.compareTo(v) < 0;
}
我通过类型转换传递给 compareTo 的参数解决了这个问题。但它仍然给我警告(类型安全:从 Comparable 到 T 的未经检查的转换)。为什么会这样。难道我做错了什么。实现这一目标的最佳方法是什么。
private boolean less(Comparable<T> u, Comparable<T> v) {
return u.compareTo((T) v) < 0;
}
【问题讨论】:
-
也许我只是缺少上下文,但它不应该更像
private boolean less(Comparable<T> u, T v) {吗?既然您要比较U和V类型的T...? -
T extends Comparable 我想比较两个 Comparable 类型的参数。
-
但是
Comparable只定义了一个方法compareTo(T)。您要比较的值必须与Comparable期望的类型相同。你的方法实际上看起来更像private <T extends Comparable> boolean less(Comparable<T> u, T v) {?!?对我来说,这毫无意义 -
我有一个 Comparable
对象数组,如果没有这个,我将如何比较它们。你能推荐我吗? -
我认为你混淆了这个问题。你有一个
Comparable<T>的数组,所以我假设你有一个T的实例,你想比较数组中的每个元素吗?然后private boolean less(Comparable<T> u, T v) {就可以了
标签: java generics comparison