2016-03-25 15 views
2

Ich möchte java.nio.files.Path in einer Klasse verwenden, die ich "DocumentGenerator" erstelle, aber ich bin mir nicht sicher, wie man es instanziieren und initialisieren kann, wenn man einen Konstruktor verwendet, der kein anderes Path-Objekt übergibt. Hier meine Klassenvariablen und zwei Konstrukteurs sind:Instantiierung und Initialisierung von 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 = 
} 

Im zweiten Konstruktor savePath und filename eine Manipulation brauchen, bevor ich sie setzen in meine Pfade Objekt so will ich nicht, um sie in es passieren nur noch. Stattdessen möchte ich versuchen, "Datei" zu instanziieren und zu initialisieren, um mit guter Programmierpraxis Schritt zu halten. Mein Problem ist, dass Path gemäß This Question keinen Konstruktor hat. Was wäre eine gute Programmierpraxis in einem Fall wie diesem? Kann es in meinem Konstruktor ohne einen bestimmten Pfad instanziiert und initialisiert werden?

Meine Frage ist nicht "Wie benutze ich java.nio.files.Path?", Kann ich das von der Java API finden.

Antwort

2

Bearbeiten: Sie müssen nicht alle Attribute Ihres Objekts in Ihren Konstruktoren instanziieren, wenn Sie sie nicht instanziieren, werden sie gleich null sein.

Um ein neues nio Path-Objekt zu erstellen:

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

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

Sie wollen eine Pfad-Instanz aus einem String erstellen? Path hat keine Konstruktoren, da es sich um eine Schnittstelle handelt, die Implementierung wird für jedes Dateisystem unterschiedlich sein. Sie sollten also this.file = Paths.get (Dateiname); –

+0

Nicht einfach verwenden: this.file = Paths.get (Dateiname); –

+0

Ok ich schätze ich verstehe jetzt, was ich mit diesem Objekt machen soll, wenn ich im Konstruktor nichts dafür habe? Dann halte es null. –

Verwandte Themen