gpt4 book ai didi

java - 继承泛型接口(interface)的子类

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:55:55 29 4
gpt4 key购买 nike

我有一个接口(interface)可以确保对象可以复制自己:

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()

在代码体中。类参数也更复杂,类的用法更难理解。有什么想法可以解决这个问题吗?

最佳答案

我可能没有正确理解您的问题,但我会试一试。

首先,为什么你有一个这样扩展自身的接口(interface)?

你可以试试这个:

public interface Duplicable<T> {
public T duplicate();
}

然后当你使用另一个你希望泛型参数是可复制的类时,你可以这样做:

public class X<T extends Duplicable<T>> {
code...
}

现在,当您从 X 继承时,子类中的任何通用组件都必须是可复制的。

关于java - 继承泛型接口(interface)的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18402941/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com