AutoCloseable
インターフェイスの定義によって、
ALLのインスタンスに対してclose()
を呼び出す必要があります。
つまり、このように書く必要があります。 java.sound.sampled.SourceDataLine
インタフェースでLineインターフェイスでは、すべてのインスタンスに対してclose()を呼び出す必要があります。
try(A a = new A()){
//do something
}
、
またはより一般的に、java.sound.sampled.Line
インタフェースで、
それはALLインスタンスのclose()
、
を呼び出すために必要なまたは私はopen()
を呼びかけているclose()
後にのみ呼び出す必要がありますか?
公式文書は、明示的に、私はclose
isOpened
、
が、私はこのように書きたくなければならない場合にのみ、と述べている場合。 しかし、私は言及を見つけることができませんでした。
//can I write like this ?
SourceDataLine sdl;
try{
sdl = AudioSystem.getSourceDataLine(audioFormat);
sdl.open(audioFormat,bufferSize);
}catch(LineUnavailableException ex){
throw new RuntimeException(null,ex);
}
try(SourceDataLine sdlInTryWithResources = sdl){
//do something
}
try-with-resourcesはコードをきれいにするために考案されたもので、さらに複雑にするものではありません。 – tkausl