閉じることができるものと、前者を受け取り、関数の実行後に「閉じる」が確実に閉じられるようにする関数を受け取る単純なヘルパーメソッドを作成しようとしています。
たとえば、次のように使用したいと思います。
closing(new FileOutputStream("/asda"))(_.write("asas"))
私の実装は
object Helpers {
def closing[T <: { def close }](closeable: T)(action: T => Unit): Unit =
try action apply closeable finally closeable close
}
しかし、この単純なテストをコンパイルしようとすると:
object Test {
import Helpers._
closing(new FileOutputStream("/asda"))(_.write("asas"))
}
コンパイラは次のように文句を言います:
推論された型引数 [java.io.FileOutputStream] は、メソッド クロージングの型パラメーターの境界に準拠していません [T <: AnyRef{def close: Unit}]
理由はありますか?