gpt4 book ai didi

java - 接口(interface)的默认方法可以用来描述行为吗?

转载 作者:行者123 更新时间:2023-11-30 05:33:39 25 4
gpt4 key购买 nike

接口(interface)的默认方法可以用来描述行为/场景吗?我的意思是描述方法调用的顺序。简单的例子:

public interface ExportService {
Order getOrder(long id);
void validateOrder(Order order);
void processOrder(Order order);
void processException(e);

//is this bad?
default void executeOrder(long id) {
try {
Order order = getOrder(id);
validateOrder(order);
processOrder(order);
} catch (Exception e) {
processException(e);
}
}
}

任何链接或最佳实践都会很棒!谢谢

那么,这样更正确吗:

public interface ExportService {
Order getOrder(long id);
void validateOrder(Order order);
void processOrder(Order order);
void processException(e);
}

public abstract class AbstractExportService implements ExportService {
public abstract Order getOrder(long id);
public abstract void validateOrder(Order order);
public abstract void processOrder(Order order);
public abstract void processException(e);

protected void executeOrder(long id) {
try {
Order order = getOrder(id);
validateOrder(order);
processOrder(order);
} catch (Exception e) {
processException(e);
}
}
}

最佳答案

方法调用的正确顺序应在接口(interface)的 Javadoc 和方法的 Javadoc 中描述。这是界面的用户应该去了解界面契约的地方。

定义一个default方法只是其他方法的使用示例是没有意义的。如果实现接口(interface)的类永远不会实现它,那么向接口(interface)添加方法是没有意义的。

此外,default 方法不能强制界面的用户按所需顺序使用其他方法。在 Javadoc 中描述接口(interface)的正确用法也不会强制接口(interface)的用户正确使用该接口(interface),但如果他们不遵守约定,那么如果接口(interface)无法按预期工作,他们也不应该感到惊讶.

关于java - 接口(interface)的默认方法可以用来描述行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57039289/

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