2012-03-02 12 views
0

私は自分自身のFileクラスを実装しようとしています。これはjava.io.Fileから拡張されています(私を判断しないでください:-)、私はクラスを構築できるようにしようとしています。 java.io.Fileのインスタンスを与え、次のように:親クラスから構築された拡張クラス

public class File extends java.io.File { 

    public File (String fileName) { 
     super(fileName); 
    } 



    public File (java.io.File file) { 
     // the problem 
     super = file; 
    } 
    ... 
} 

私の問題は、私は明らかに間違った表現であるsuper = fileようなもので私のクラスを構築したいということです。これがどうやってできるのかお勧めできますか?

ありがとうございました。 thisが割り当て可能ではありませんが、あなたはすでにそれを知っているように見えるように

+3

あなたはなぜあなたはこれを行うにしようとしている* *説明できますか?私たちはもっと良い解決法を提案することができます。 super =ファイルは動作しません。なぜなら、 'super'のインスタンスは存在せず、 'this'のインスタンスだけです。あなたが望むのは、拡張子ではなく、*ラッパー*です。 – Kylar

答えて

1

はいかが

public File (java.io.File file) { 
    super(file.getPath()); 
} 
+0

それは清潔な解決策ではありませんが、私が望んだことをします。ありがとう。 –

4

あなたが相続上の組成を使用する必要があり、ここで、それは

class YourFile{ 
    private final File thatFile; 
    public YourFile(File file) { 
    thatFile = file; 
    } 
//getter for thatFile may be here 
} 
3

Super次のようになります方法です。私があなたを正しく理解していれば、あなたはコピーCtorを達成したいと思っています。このためには、io.Fileのプロパティを抽出し、そのデータを使用して独自のFileを構築する必要があります。

または使用するガスタンとして組成を使用してください。この構成の欠点は、通常のjava Fileクラスの使用をあなた自身で置き換えることができないことです。

関連する問題