与签名中需要实现类型参数的方法的接口

时间:2013-10-08 12:10:42

标签: java interface

这是一个澄清我的意思的例子:假设我有两个类:

class A {
    boolean isEqual(A instance);
}

class B {
    boolean isEqual(B instance);
}

Java是否有可能定义诸如

之类的接口
interface I {
    // signature for isEqual(...) here
}

以便所有实现中的isEqual方法都采用实现类型的参数?像

class C implements I {
    boolean isEqual(C instance);
}

提前致谢!

2 个答案:

答案 0 :(得分:4)

我认为这就是你要找的东西:

interface Equatable<T> {
    public boolean isEqual(T instance);
}

class C implements Equatable<C> {
    boolean isEqual(C instance);
}

这类似于标准Comparable界面。

答案 1 :(得分:1)

  

Java是否有可能定义一个接口,例如......

是的,通用形式:

public interface I<T> {
    public boolean isEqual(T instance);
}

public class C  implements I<C> {

    @Override
    public boolean isEqual(C instance) {
        return false;
    }    
}

或者,例如,如果课程ABC继承了某些超类,请说DD

所以你可以写:

interface I {
   boolean isEqual(<? extends DD> instance);
}