gpt4 book ai didi

java - 关于允许许多不同类型的构造函数的最佳实践?

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:27 25 4
gpt4 key购买 nike

我有一个名为 RawReader 的类,它读取某些资源的字节,解析它们,然后将文件写入输出目录。

允许将不同类型作为源和目标传递给构造函数是有意义的。

  • 来源:字符串(文件或 URL)、URL、文件或 InputStream
  • 目标:字符串(目录)或文件

但是,如果我重载构造函数,我会得到 8 个不同的版本。如果我想添加第三个可选参数,例如 chunkSize 我会有 16 个构造函数!

另一方面,我可以只让两个构造函数接受(Object, Object)(Object, Object, int)。可以检测参数类型,如果不正确则抛出 IllegalArgumentExceptions。

Java 通常如何处理这种情况?

最佳答案

您可以使用 builder :

Foo foo = new FooBuilder().setFile(..).setChunkSize().build();

其中 .build() 调用 Foo 的构造函数,该构造函数采用构建器并分配设置的任何变量。类似的东西:

公共(public)类 Foo {

private Foo(FooBuilder builder) {
//get whatever you can find from the builder to fill the state of Foo
}
public static FooBuilder {
private String filename;
private File file;
private InputStream stream;
private int chunkSize;
// getters and setters
public Foo build() {
return new Foo(this);
}
}

关于java - 关于允许许多不同类型的构造函数的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113078/

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