私はあなたの対価/投票のための答えとして、(上記の)私のコメントを追加している(私は評判が欲しい!)
をのRandomAccessFileの使用は、実装の詳細として認識されなければなりません。あなたのコードの周りを渡さないでください。あなたは、以前はRAFに依存していたことが、何か他のものと仕事をしたいと思っているかもしれません。あなたがやっていることからビジネスロジック/行動を取り出し、それをインターフェースに入れます。 FileとRandomAcecssFileをメンバー変数として格納するクラスにそのインターフェイスを実装します。これにより、常に両方にアクセスできるようになります。あなたは、Fileがコンストラクタパラメータとして取るURIを使用することさえできます。 、あなたはFooのを使用しましたあなたのコード内の
class FileBasedFoo implements Foo {
private File file;
private RandomAccessFile raf;
// ... your impl here
}
どこでも:
interface Foo {
public URI getUri();
public void doSomething();
public Bar doSomethingElse();
}
あなたは持つことができますので、あなたは、インタフェースFooのを持っている場合 - これはかなりオープンかつ合理的なものです
class RpcFoo implements Foo {
// ... some SOAPy implementation here
}
class RestFoo implements Foo {
// ... you get the idea
}
RAFを開くときに使用するファイルを保持します。とにかく私はRAFに依存することは決してありませんし、私のインターフェースのどこかにそれを渡すこともありません。それは実装の詳細です。あなたがFooというインターフェースを持っていれば、それは何かをするためには、FileBasedFooの実装が必要です。後で参照できるように、ファイルをメンバー変数として保管してください。 –
ファイルディスクリプタをJNIに渡し、Cコードを使ってファイルディスクリプタに関連付けられたファイルを見つける非常に醜い人工的なコードを書いてください。 – Tudor