gpt4 book ai didi

java - java中的回调行为

转载 作者:行者123 更新时间:2023-12-02 06:28:32 25 4
gpt4 key购买 nike

我的问题更多的是针对我的实现所使用的设计模式。我的代码写如下 -

X-Service.java

handler.setListeners(new HttpResponseHandler.conListers() {

@Override
public void success() {

}

});

HttpResponseHandler

protected conListers conListener;
public interface conListers {
public void success();
}

public void conListers(conListers listener) {
this.conListers = listener;
}

所以现在我的问题是,如果我只有一种类型的成功函数,我可以使用这种技术。更清楚地说,我有多个服务,其中成功方法具有不同的签名,例如 --

public void success(String x);
public void success(HashMap y, Integer z);

我不想将所有方法都放在接口(interface)中,因为我必须在所有服务中实现它们。我需要一种方法来实现我想要的成功方法。

最佳答案

您可以使用泛型类型声明来定义接口(interface):

public interface conListers<E> {
public void success(E value);
}

或者,如果您需要相同类型的可变数量的参数,那么您可以使用:

public interface conListers<E> {
public void success(E... value);
}

如果您需要固定数量的参数,那么您可以在实现类的 success() 定义中测试 value 参数的长度。

但是,我想不出任何可以用来允许 success() 接受固定数量的不同类型参数的模式,除非您使用 Object 但是然后带来了它自己的问题(比如必须类型检查实现类中的所有参数):

public interface conListers {
public void success(Object... value);
}

关于java - java中的回调行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20293783/

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