如何将Object作为可比参数发送给方法?
我有这样的规定,我想使用的功能:如何将Object作为可比参数发送给方法?
boolean check(Comparable<Object> obj1, Comparable<Object> obj2) {
// do something
}
,我有:
Object obj1,obj2;
,我要发送到的方法检查,我怎么能投或转换的两个对象可比较的?
我希望我很清楚,谢谢。
好吧,如果你的两个对象引用真正指向比较的对象,你可以简单地做
check((Comparable<Object>) obj1, (Comparable<Object>) obj2);
CNC中
当然这会产生一个警告,你基本上是告诉编译器,你知道更好。编译器警告你,如果obj
不是你所说的泛型类型参数,那么你有可能会出错。你可以告诉你的编译器闭嘴,你是真的,真的很肯定的是,使用注释:
@SuppressWarnings("unchecked")
Comparable<Object> cmp1 = (Comparable<Object>) obj;
@SuppressWarnings("unchecked")
Comparable<Object> cmp2 = (Comparable<Object>) obj;
check(cmp1,cmp2);
当您使用@SupressWarning
注解你通常添加评论,说明为什么你如此积极确保不安全的投将永远成功。
我不得不使用对象,因为我得到它从 'OBJ1 = obj.getClass()getfield命令(STR);' 和解决方案: '检查((可比
当然,它会产生一个警告,你基本上告诉编译器你知道得更好。编译器警告你,如果obj不是你说的那么真实,那么你有可能会错误。你可以告诉编译器你真的确实使用了注释:'@SuppressWarnings(“unchecked”)\t \t可比较的
不要使用
Object obj1, obj2;
而是
Comparable obj1, obj2;
原始类型?不,谢谢。 –
@JBNizet:同意,但除非他告诉我们他正在使用什么类型,我们能做的最好的是'Comparable >'。 –
是的。但你在答案中说Comparable。和Comparable >与可比较的
至于你说:
check((Comparable<Object>) obj1, (Comparable<Object>) obj2);
这么说,我不知道实现Comparable<Object>
任何一类。该方法可能应该采用Comparable<?>
作为参数而不是Comparable<Object>
。
提供的方法我无法更改界面。和( ''支票((可比较的
这是一个警告,因为由于类型擦除,没有办法检查一个对象实现可比较
要发送到此方法的对象必须是Comparable
类型。所以他们必须实现Comparable
接口。
然后你可以发送这个对象到你的函数。
如果你有自己的类实现界面是这样的:
public class MyClass implements Comparable {
// realize compare method
}
的“提供的函数”错误地声明。没有什么实现可比较的