创建仅限于自己的类的通用接口

mul*_*lle 7 java generics interface

我想为这两个类创建一个通用接口,但我不确定如何以正确的方式指定泛型.

public class ThingA implements Thing {
    public ThingA createCopy(ThingA original);
}

public class ThingB implements Thing {
    public ThingB createCopy(ThingB original);
}
Run Code Online (Sandbox Code Playgroud)

我试过这个.

public interface Thing<V extends Thing<V>> {
    public V createCopy(V original);

}
Run Code Online (Sandbox Code Playgroud)

但是我仍然可以做这样的事情,这是不允许的.

public class ThingB implements Thing<ThingA> {
    public ThingA createCopy(ThingA original);
}
Run Code Online (Sandbox Code Playgroud)

Gui*_*ume 6

没有this关键字泛型(也没有方法参数和返回值声明),因此您无法完全按照自己的意愿行事.

换句话说,接口将允许确保类中的所有方法使用一致类型,但不引用类类型本身.