戻るInputStream
ことは本質的に悪いことではありません。リソースを閉じる責任を負わずに、呼び出し元がデータにアクセスできるようにする場合は、次のようにします。
interface InputReader {
void readInput(InputStream is);
}
public class MyClass {
void feed(InputReader ir){
try(InputStream is=new FileInputStream( _file )){
ir.readInput(is);
}
}
}
呼び出し元は、クローズ可能なリソースを引数として受け取る のインスタンスを指定し、InputReader
もはやそれをクローズする責任はありません。
MyClass myClass = ... ; //Get the instance
myClass.feed( new InputReader() {
@Override
void readInput(InputStream is){
... ; // Use at will without closing
}
});
スローと例外が発生するように、InputStream
に渡す前に をデコレートすることを検討する必要があります。InputReader
.close()