gpt4 book ai didi

Java泛型限制类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:50 25 4
gpt4 key购买 nike

在 Java 中我有以下类结构:

所有类
+-- A 类扩展了所有
+-- B 类扩展所有

类 ContainAll
+-- 类 ContainA 扩展了 ContainAll
+-- 类 ContainB 扩展了 ContainAll

在每个“包含”类中都有一个链表和一个方法

public addElement(All a) {
list.add(a)
}

类 ContainAll 不应被实例化,但类 ContainA 和 ContainB 可以。
我如何使用泛型明确指出 ContainB 类中的 addElement 只能从类型 B 获取对象,例如:

public abstract class ContainAll<T extends All> {}

public class ContainB<T extends B> extends ContainAll<All> {
public addElement(T b) {
list.add(b);
}
}

但是这个例子不行,我试过了。感谢阅读。

最佳答案

让你的ContainAll抽象类(因为您的要求之一是不能实例化它)并使其实现 .addElement() :

public abstract class ContainAll<T extends All>
{
private final List<T> list = new LinkedList<T>();

// ...

// FINAL! Subclasses cannot override it
public final void addElement(final T element)
{
list.add(element);
}
}

然后执行ContainA作为ContainAll<A>等等 .addElement()将“自动”工作。

关于Java泛型限制类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17106608/

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