我是Java的新手,从Python和PHP,我习惯了函数参数的默认值.
所以我养成了编写方法的习惯,这些方法旨在从稍微不同的情况调用,你只想设置一些值.例如,在我的PHP代码中,这种情况很常见,因为我有工厂方法为对象实例提供稍微不同的属性.
在Java中,似乎我必须有一个方法需要所有参数,然后是几个重载的变量,这些变量将调用该方法,其中一些参数设置为默认值,一些参数由调用者提供.哪,好吧,好吧,但有时会让我紧张.
我记得在C++和ActionScript的一些简短的短途旅行中,这已经让我烦恼了.现在,更有经验的Java开发人员有这方面的一些捷径吗?
在我看来,从技术上讲,这个问题已被所有帖子的总和所回答为"是的,它是".我在下面打开了一个wiki帖子来收集各种替代解决方案,如果您愿意,请提供帮助.我发现所有这些都非常有用,可以作为典型Java构造的灵感和学习示例.
另一个选项是构建器模式的变体 - 您有一个表示所有参数的类型,构造该类型的实例(相应地默认),设置所需的属性,然后将结果传递给原始方法,或者添加"参数类型"中的方法为您调用该方法.
您可以在标准库中使用ProcessBuilder
和Process
类看到这一点.