java - java方法重载似乎不清楚
问题描述
我不确定这是否是使用方法重载的正确方法,或者是否有更好/更好的其他逻辑。我有这 4 种可能发生的情况。方法计数有限制吗?
private ResponseEntity<ServiceResponse> handleResponse(ServiceResponse response, ServiceRequest request) {
return handleResponse(response, request, null, null);
}
private ResponseEntity<ServiceResponse> handleResponse(ServiceResponse response, ServiceRequest request, Exception e) {
return handleResponse(response, request, e, null);
}
private ResponseEntity<ServiceResponse> handleResponse(ServiceResponse response, ServiceRequest request, Header header) {
return handleResponse(response, request, null, correlation);
}
private ResponseEntity<ServiceResponse> handleResponse(ServiceResponse response, ServiceRequest request, Exception e, Header header) {
//logic//
}
解决方案
方法计数是否有限制
没有实际限制;但是每次添加另一个“可选”参数时,重载次数就会增加一倍,因此在代码量方面(认知和维护方面)的负担越来越大。
对于超过 2 个参数,您可以考虑使用“构建器模式”(我说“构建器”是因为您并没有真正构建某些东西,只是调用一个方法)。
handler()
.withException(e) // omit if not needed
.withHeader(h) // omit if not needed
.call();
推荐阅读
- flutter - 使用 Flutter 中的“setByPostion”组件将递增的数字居中
- linux - 如何在 linux 中围绕 c/c++ 共享库创建我的瘦包装共享库
- javascript - 使用正则表达式从搜索中排除 HTML 标签而不删除 HTML 标签?
- python - 无法打开使用 py2app 创建的 python 应用程序
- streaming - 在时间序列中找到阈值点
- python - Python http.server 作为 Windows 服务失败(错误 1053)
- azure-aks - 如何使用 AKS POD 容器安装带有凭据的 NFS 共享
- networking - 添加驱动器以将其用作服务器
- python - 如何以适当的分隔将表达式存储在列表中?
- java - 如何覆盖 BSImagePicker 画廊的后退按钮?