gpt4 book ai didi

java - 使用泛型实现责任链

转载 作者:行者123 更新时间:2023-11-30 08:53:46 25 4
gpt4 key购买 nike

<分区>

所以我想实现责任链但是使用泛型,有一个上限。

public abstract class Handler<C extends Command> {

private Handler<? extends Command> successor;

public Handler(Handler<? extends Command> successor) {
this.successor = successor;
}

public final String handle(C cmd) {
if (canHandle(cmd)) {
return doHandle(cmd);
} else {
// The method doHandle(capture#3-of ? extends Command) in the type Handler<capture#3-of ? extends Command>
// is not applicable for the arguments (C)
return successor.doHandle(cmd);
}
}

protected abstract boolean canHandle(C cmd);

protected abstract String doHandle(C cmd);

}

abstract class Command {
public String getParamBase() {
return "base";
}
}

class CommandTypeOne extends Command {
public String getTypeOneParam() {
return "ParamTypeOne";
}
}

class CommandTypeTwo extends Command {
public String getTypeTwoParam() {
return "ParamTypeTwo";
}
}

当然,我可以使用非泛型类,并在所有地方使用 Command 作为参数,这样就可以了。但是我不想在 doHandle 方法中使用强制转换来传递给相应的 Command 子类型。我想为每个子类型、泛型都有一个处理程序,然后将它们链接起来。

我遇到的问题是:Handler 类型中的方法 doHandle(capture#3-of ? extends Command) 不适用于参数 (C)

为什么如果 C 扩展命令?

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