我有一个接口可以确保对象可以复制自己:
public interface Duplicable<T extends Duplicable<T>> {
public T duplicate();
}
我现在有
class X implements Duplicable<X>
但我也有一个扩展 X 的 Y 类。
这不是问题,直到我需要另一个泛型类:
public class DoStuffWithDuplicable<T extends Duplicable<T>>
我不能使用 Y 来使用 DoStuffWithDuplicable 的通用版本,因为它没有实现Duplicable<Y>
但Duplicable<X>
因为它从 X 继承。
所以我尝试了
public class DoStuffWithDuplicable<T extends Duplicable<? super T>>
..但这意味着稍后会引入不安全的演员表
(T) obj.duplicate()
在代码体中。此外,类参数更复杂,类的用法更难理解。任何想法如何解决这个问题?