2016-03-25 12 views
2

私は "DocumentGenerator"と呼ばれるクラスでjava.nio.files.Pathを使用したいと思いますが、別のPathオブジェクトを渡さないコンストラクタを使用するときにインスタンス化して初期化する方法がわかりません。ここに私のクラス変数と2つのコンストラクタです:私は私のパスに入れて前に2番目のコンストラクタで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によると、Pathにコンストラクタがないことです。このような場合には、どのようなプログラミングが良いでしょうか? それはインスタンス化され、指定されたパスなしで私のコンストラクタで初期化できますか?

私の質問はではありません。「java.nio.files.Pathを使用するにはどうすればよいですか」と私はJava APIから見つけることができます。

答えて

2

編集: オブジェクトのすべての属性をコンストラクタ内でインスタンス化する必要はありません。インスタンス化しない場合は、nullに等しくなります。あなたは文字列からのパスのインスタンスを作成したい

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

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

:新しいNIO Pathオブジェクトを作成するには

?パスはコンストラクタを持たないため、実装はファイルシステムごとに異なります。ですから、this.file = Paths.get(filename);を持つ必要があります。 –

+0

単純に使用しないでください:this.file = Paths.get(filename); –

+0

私はコンストラクタで何も持っていない場合、私は今、このオブジェクトをどうすればよいか分かりますか?その後、それをnullにしておきます。 –