gpt4 book ai didi

java - 在 Java 中使用泛型参数(必须扩展泛型类)扩展抽象方法

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

假设我有一个通用构建器类型:

public abstract class Builder<T> {

public abstract T build();
}

然后是 Foo 类和它的构建器,它扩展了 Builder:

public class Foo {
// stuff
}

public class FooBuilder extends Builder<Foo> {

public Foo build() {
return new Foo();
}
}

我还有一个抽象的通用处理程序类型:

public abstract class Handler<T> {

public abstract <U extends Builder<T>> void handle(U builder);
}

最后是一个 FooHandler:

public class FooHandler extends Handler<Foo> {

@Override
public void handle(FooBuilder builder) {
// do something
}
}

问题是 FooHandler 的 handle() 未被识别为覆盖 Handler 的 handle():方法不覆盖其父类(super class)中的方法。可以这样做吗?

最佳答案

将类型参数移动到类级别

abstract class Handler<T, U extends Builder<T>> {
public abstract void handle(U builder);
}

class FooHandler extends Handler<Foo, FooBuilder> {
@Override
public void handle(FooBuilder builder) {
// do something
}
}

关于java - 在 Java 中使用泛型参数(必须扩展泛型类)扩展抽象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363773/

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