实例化和初始化java.nio.files.Path?

5

我想在我创建的名为“DocumentGenerator”的类中使用java.nio.files.Path,但是当使用不传递另一个Path对象的构造函数时,我不确定如何实例化和初始化它。以下是我的类变量和两个构造函数:

private ArrayList<String> totalOutput;
private ArrayList<String> programInput;
private Scanner in;
private String savePath, fileName;
private Path file;

public DocumentGenerator(Path file) {
    this.programInput = new ArrayList<String>();
    this.totalOutput = new ArrayList<String>();
    this.in = new Scanner(System.in);
    this.file = file;
    this.savePath = "";
    this.fileName = "";
}

public DocumentGenerator(String savePath, String fileName) {
    this.programInput = new ArrayList<String>();
    this.totalOutput = new ArrayList<String>();
    this.in = new Scanner(System.in);
    this.savePath = savePath;
    this.fileName = fileName;
    this.file = 
}

在第二个构造函数中,savePath和fileName需要进行一些操作,然后才能将它们放入我的Paths对象中,因此我暂时不想将它们传递进去。相反,我想尝试实例化并初始化“file”,以保持良好的编程实践。但是,根据这个问题,Path没有构造函数。在这种情况下,什么是良好的编程实践?在我的构造函数中是否可以实例化和初始化它而不需要给定路径?
我的问题不是“如何使用java.nio.files.Path?”我可以从Java API中找到答案。
1个回答

9

编辑: 在构造函数中,您不需要实例化对象的每个属性。如果您不实例化它们,它们将等于null。

要创建一个新的nio路径对象:

import java.nio.file.Path;
import java.nio.file.Paths;

Path p = Paths.get("/tmp/myfile");

你想从一个字符串创建Path实例吗?Path没有构造函数,因为它是一个接口,对于每个文件系统,实现方式都不同。所以你应该有这样的代码:this.file = Paths.get(filename); - Benoit Vanalderweireldt
这里使用了Paths.get(filename)来将文件名转换为Path对象,并将其赋值给this.file。 - Benoit Vanalderweireldt
好的,我猜我现在明白了,如果我在构造函数中没有为这个对象提供任何内容,那么我该怎么办?那就把它保持为 null。 - Benoit Vanalderweireldt
让我们在聊天中继续这个讨论 - Hobopowers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接