gpt4 book ai didi

java - 如果我们不能概括方法参数,我们是否需要接口(interface)/契约

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

我想创建一个有两个方法的接口(interface),比如 uploadFiledownloadFile。虽然我只需要实现者只实现这两种方法,但我不确定并且想关心这些方法需要采取哪些争论。我的意思是,不同的实现者可能会要求不同的参数。在那种情况下,我是否仍然应该继续通过将上述方法作为 var-arg 方法来创建接口(interface),如下所示

boolean uploadFile(Object ... parameters)
OutputStream downloadFile(Object ... parameters)

或者还有比这更好的方法吗?如果我不能泛化方法参数,创建接口(interface)是否正确?我只确定方法名称和返回类型。

最佳答案

这可能是泛型的一个用例。考虑以下类的安排 - 在这里我们定义了一个抽象的“参数”类型并在接口(interface)中引用它。具体类使用特定的参数集。

abstract class HandlerParams {    
}

interface FileHandler<T extends HandlerParams> {
boolean uploadFile(T parameters);
OutputStream downloadFile(T parameters);
}

示例实现:

class URLParams extends HandlerParams {
// whatever...
}

class URLFileHandler implements FileHandler<URLParams> {

@Override
public boolean uploadFile(URLParams parameters) {
// ...
}

@Override
public OutputStream downloadFile(URLParams parameters) {
// ...
}
}

我必须承认,我很难想象这种安排会如此有用的场景。我想你可能有一些与文件处理程序一起工作的东西,但感觉有点人为:

class SomethingThatUsesFileHandlers {
public <T extends HandlerParams> void doSomething(FileHandler<T> handler,
T params) {
handler.downloadFile(params);
}
}

关于java - 如果我们不能概括方法参数,我们是否需要接口(interface)/契约,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22985124/

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