FileWriter : AutoCloseable & FunctionalInterface


>>Testament.java

import java.io.FileWriter;
import java.io.IOException;

@FunctionalInterface
interface xInstance<L, R extends Throwable>{
  public abstract void accept(L obj) throws R;
}

public class Testament implements AutoCloseable{
  private FileWriter writer;
  private Testament(final String fileName) throws IOException{
    writer = new FileWriter(fileName);
  }
  @Override
  public void close() throws IOException{
    System.out.println("closed...");
    writer.close();
  }
  public void writeToFile(final String mes) throws IOException{
    writer.write(mes);
  }
  public static void exec(final String fileName, final xInstance<Testament, IOException> block) throws IOException{
    try(Testament t = new Testament(fileName)){
      block.accept(t);
    }
  }
  public static void main(String args[]) throws IOException{
    Testament.exec("/Users/someone/Desktop/hoge.txt", w -> w.writeToFile("how are you doing today?\n"));
  }
}

  誤記に因つて五六回程度倒けつつも修正を終える.
f:id:blau_coerulea:20170419201815p:plain
  実行結果
f:id:blau_coerulea:20170419201803p:plain
  fmfm, smartなのかしらそうかしら. 隠蔽されるので簡潔とは成りますが, 慣れないと"......え?"つてなりそう.

  tryを書き忘れてもコンパイルが通ります故, もしそうしてしまつた刻はファイルが自動で閉じられるのを期待するのは潔く諦めませう.

  不用意にリソースを掴んだままにするのを避ける為に, というのが主たる使用目的となります.

Remove all ads