我有这个提供的功能,我想使用:
boolean check(Comparable<Object> obj1, Comparable<Object> obj2) {
// do something
}
我有:
Object obj1,obj2;
我想发送到方法检查,如何将两个对象转换或转换为 Comparables ?
我希望我清楚,谢谢。
我有这个提供的功能,我想使用:
boolean check(Comparable<Object> obj1, Comparable<Object> obj2) {
// do something
}
我有:
Object obj1,obj2;
我想发送到方法检查,如何将两个对象转换或转换为 Comparables ?
我希望我清楚,谢谢。
如你所说:
check((Comparable<Object>) obj1, (Comparable<Object>) obj2);
也就是说,我不知道有任何类实现Comparable<Object>
. 该方法可能应该Comparable<?>
作为参数而不是Comparable<Object>
.
好吧,如果你的两个对象引用真正指向 Comparable 对象,你可以简单地做
check((Comparable<Object>) obj1, (Comparable<Object>) obj2);
-编辑-
当然这会产生一个警告,你基本上是在告诉编译器你知道得更好。obj
编译器警告您,如果就其泛型类型参数而言不是您所说的那样,您可能会出错。你可以告诉你的编译器闭嘴,你真的非常确定,使用注释:
@SuppressWarnings("unchecked")
Comparable<Object> cmp1 = (Comparable<Object>) obj;
@SuppressWarnings("unchecked")
Comparable<Object> cmp2 = (Comparable<Object>) obj;
check(cmp1,cmp2);
当您使用@SupressWarning
注释时,您通常会添加一条注释,说明您为什么如此肯定地确定不安全的强制转换总是会成功。
不要使用
Object obj1, obj2;
反而
Comparable obj1, obj2;
您要发送到此方法的对象必须是Comparable
. 所以他们必须实现Comparable
接口。
Comparable obj1 = new Comparable() {
// ... realize compare method
}
然后您可以将此对象发送到您的函数。
如果您有自己的类以这种方式实现接口:
public class MyClass implements Comparable {
// realize compare method
}