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

我想做这样的事情:

公共类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));  }} 

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

是时候开始使用静态工厂模式了


也可以看看

  • 什么是静态工厂方法?

您不能创建两个接收单个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)); } 

构造函数不能这样做

一个懒惰的解决方案

 public Arquivo(String s) {} public Arquivo(String s, boolean b) {} 

并且不要使用布尔值