如何使用具有相同参数类型的多个构造函数创建类
我想做这样的事情:
公共类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) {}
并且不要使用布尔值