如何使用具有相同参数类型的多个构造函数创建类

时间:2013-10-28 20:00:15

标签: java design-patterns constructor

我正在尝试做这样的事情:

public class Arquivo {

    private File diretorio  = null ;

    public Arquivo(File dir){
        this.diretorio = dir;
    }

    public Arquivo(String dir){
        this( new File(dir) );
    }

    public Arquivo(String fileName){
        this( new File("./src/Data/"+fileName) );
    }
}

3 个答案:

答案 0 :(得分:10)

你不能使用构造函数,这是构造函数的限制之一

开始使用static factory pattern

的时间

另见

答案 1 :(得分:3)

您不能创建两个接收单个String参数的构造函数,只能存在一个这样的构造函数。 必须是签名之间的区别,例如,向其中一个构造函数添加第二个参数。

或者,您可以创建一个构造函数,并在第二个参数中指明它是文件还是目录:

// isFile == true means it's a file. isFile == false means it's a directory
public Arquivo(String fileName, boolean isFile) {
    this(new File((isFile ? "./src/Data" : "") + fileName));
}

答案 2 :(得分:-1)

构造函数不能这样做

懒惰的解决方案是

public Arquivo(String s) {}

public Arquivo(String s, boolean b) {}

并且不要使用布尔值