gpt4 book ai didi

具有泛型参数的 Java 抽象方法

转载 作者:行者123 更新时间:2023-12-02 04:51:53 29 4
gpt4 key购买 nike

我有以下情况:有一个抽象类(abs)和两个从abs扩展的类(con1 con2)

现在我希望abs有一个带有参数的抽象函数,其中参数的类型必须是类本身的类型。

我在 abs 类中尝试了以下操作:

public abstract void foo(abs i);

以及 con1con2 中的以下内容:

public abstract void foo(con1 i);
public abstract void foo(con1 i);

但这没有用。解决此类问题的一般方法是什么?

最佳答案

不,基本上没有实现该方法。根据您获得的声明,我应该能够编写:

abs x = new con1();
abs y = new con2();
x.foo(y);

听起来像你想要的:

public abstract class Abstract<T extends Abstract<T>>
{
public abstract void foo(T t);
}

然后:

public final class Concrete1 extends Abstract<Concrete1>
{
@Override public void foo(Concrete1 x) { ... }
}

请注意,这并没有完全强制执行它,因为您仍然可以编写:

public final class Evil extends Abstract<Concrete1>

...但至少当每个人都“按规则行事”时它才有效。

关于具有泛型参数的 Java 抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29143435/

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