2016-03-25 3 views
2

Я хотел бы использовать java.nio.files.Path в классе, который я создаю, называемом «DocumentGenerator», но я не уверен, как его инициализировать и инициализировать при использовании конструктора, который не проходит в другом объекте Path. Вот мои переменные класса и два конструктора:Создание и инициализация java.nio.files.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 и имя_файла нужны некоторые манипуляции, прежде чем я положил их в мои Дорожки объект, так что я не хочу, чтобы передать их в это только пока. Вместо этого я хотел бы попробовать создать экземпляр и инициализировать «файл», чтобы он соответствовал хорошей практике программирования. Моя проблема заключается в том, что в соответствии с This Question Путь не имеет конструктора. Что было бы хорошей практикой программирования в таком случае? Может ли быть создан и инициализирован в моем конструкторе без заданного пути?

Мой вопрос: не «Как использовать java.nio.files.Path?», Я могу найти это с помощью Java API.

ответ

2

Редактировать: Вам не нужно создавать экземпляры каждого объекта в своих конструкторах, если вы их не создаете, они будут равны нулю.

Чтобы создать новый объект NiO Путь:

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

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

Вы хотите создать экземпляр Path из строки? Путь не имеет конструкторов, потому что это интерфейс, реализация будет отличаться для каждой файловой системы. Таким образом, вы должны иметь this.file = Paths.get (filename); –

+0

Простое использование: this.file = Paths.get (filename); –

+0

Ок, я думаю, теперь я понимаю, что делать с этим объектом, если у меня нет ничего для этого в конструкторе? Затем держите его в нуле. –

Смежные вопросы