あなたの検討/投票の答えとして、私のコメント(上記)を追加しています(私は評判が欲しいです!)
RandomAccessFile の使用は、実装の詳細として認識されるべきです。コードに渡さないでください。以前は RAF に依存していたものを別のもの (リモート システムなど) で動作させたいとすぐに思うかもしれません。あなたがしていることからビジネスロジック/動作を取り出し、それをインターフェースに入れます。そのインターフェイスを、File と RandomAcecssFile をメンバー変数として格納するクラスに実装します。これにより、常に両方にアクセスできます。File がコンストラクターのパラメーターとして受け取る URI を使用することもできます。これは非常にオープンで合理的なことです。インターフェース Foo がある場合は、次のようになります。
interface Foo {
public URI getUri();
public void doSomething();
public Bar doSomethingElse();
}
次のものを使用できます。
class FileBasedFoo implements Foo {
private File file;
private RandomAccessFile raf;
// ... your impl here
}
Foo を使用したコード内のどこでも、透過的に切り替えることができます。
class RpcFoo implements Foo {
// ... some SOAPy implementation here
}
class RestFoo implements Foo {
// ... you get the idea
}