我有一个类接收 2 个未知的通用对象 x 和 y。如果它们具有可比性,我必须将它们与对象进行比较。我发现我可以使用 instanceof
检查对象是否实现了 Comparable
接口(interface),但我不知道如何使用 .compareTo
方法,尽管我知道对象实现了它们-
我想做的基本上是 x 和 y 是通用对象:
public void someMethod(E x, E y) {
if (x instanceof Comparable && y instanceof Comparable) {
if(x.compareTo(y) < 0){ //The method compareTo(E) is undefined for the type E
//do stuff
}
}
}
谁能指出我正确的方向?
最佳答案
您需要指定一个通用类型绑定(bind)。现在 E
可以是任何 Object
类型,但看起来您想将它限制为任何实现 Comparable
的类型,这看起来像:
public <T extends Comparable<? super T>> void someMethod(T x, T y) {
if (x.compareTo(y) < 0) {
//do stuff
}
}
建议转换的备选答案是正确的,但不是一个好的解决方案:如果您知道“x”和“y”实现了Comparable
,您应该这样限制它们。
关于java - 使用通用对象的已知方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30590561/