gpt4 book ai didi

java - 使用许多可选参数有效地重载函数

转载 作者:行者123 更新时间:2023-11-30 10:16:00 25 4
gpt4 key购买 nike

今天我正在编写一个具有两个必需参数和三个可选参数的函数。自从使用 Optional<>类型作为参数不受欢迎,函数重载一直是我处理这个问题的工具。所以我最终得到了这样的结果:

public boolean func(int a, String b)

public boolean func(int a, String b, String c)

public boolean func(int a, String b, int d)

public boolean func(int a, String b, long e)

然后我必须对两个参数进行各种组合...

public boolean func(int a, String b, String c, int d)

public boolean func(int a, String b, String c, long e)

public boolean func(int a, String b, int d, long e)

最后是“全功能”

public boolean func(int a, String b, String c, int d, long e)

这对我来说似乎工作量太大,当这种情况发生时,我觉得自己做错了什么。为什么我应该创建 7 个附加函数而不是使用 Optional或者在这种情况下是 POJO?处理此问题的最有效方法是什么?

最佳答案

您绝对不必实现可选参数的所有组合。

在对此做出决定时要牢记的关键观点是它对调用者的用处。如果您没有用例来支持和公开重载方法,那么创建这些重载方法只会添加不必要的代码,从而产生不必要的测试和维护负担。

如果您正在寻找一种更简单的方法来展示相同的灵 active ,那么您可以使用Optional:

public boolean func(int a, String b, 
Optional<String> c, Optional<Integer> d, Optional<Long> e)

这可能是一个很好的折衷方案,允许您的合约在功能上等同于具有许多重载方法的初始 API。它允许您的客户选择他们发送的内容,并允许您避免 API 困惑。最重要的是,它明确了什么是可选的,调用者无需阅读每个方法的文档。

关于java - 使用许多可选参数有效地重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50191358/

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