授業で習わなかったJava
大学二年生の頃にjavaを授業で学んだが、その時に習わなかったjavaの使い方メモ。
javaをあまり使っていないので構文や使い方に間違いがあるかも。
目次
- lambda
- try-with-resources
- nio
- stream-api
- optional
- var
lambda
Runnable runner = new Runnable() { @Override public void run() { System.out.println("長いコード"); } }; runner.run();
上記コードが下記のように書ける。
Runnable runner = () -> {
System.out.println("短くなった!");
};
runner.run();
try-with-resources
バイバイclose()。
try () { ここでclose()が必要な変数定義 変数を使う close()する } catch (なんとかException) { }
上記変数定義をtry
の引数で行うとほとんどの場合はclose()
がいらない!
try (ここでclose()が必要な変数定義) { 変数を使う } catch (なんとかException) { }
void foo() throw なんとかException { ここでclose()が必要な変数定義 try (変数) { 変数を使う } }
nio
ファイルの操作が簡単になるらしい。
こちらのコードを参照しました。
try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ファイルパス), "UTF-8")); brを使う close() }
上記のコードがなんと下記のように書けるらしい。
try (BufferedReader br = Files.newBufferedReader(ファイルパス, StandardCharsets.UTF_8)) {
brを使う
}
Path path = Paths.get(パス); try (Stream<String> lines = Files.lines(path)) { lines.forEach(System.out::println); } catch (IOException e) { }
stream-api
Stream APIを使うと、分かりやすくコードを書くことができるらしい。
配列やリストや連想配列等のfoo定義 for(型 bar : foo) { if (bar == 1) { System.out.println(bar); } }
上記の処理を下記のように書けるようになる。
配列やリストや連想配列等のfoo定義
foo.stream()
.filter(bar -> bar == 1)
.forEach(bar -> System.out.println(bar));
optional
バイバイぬるぽ。
Dog shibainu = getDog(); if (shibainu == null) { }
上記の処理を下記のように書くことで強制的にnullチェック!
Optional<Dog> shibainu = Optional.ofNullable(getDog()); shibainu.ifPresent(inu -> inu.bark());
var
型の推論。
Map<String, String> map = Map.of("foo", "1", "bar", "2", "baz", "3");
Map<String, String>
をvar
で書くことができる
var map = Map.of("foo", "1", "bar", "2", "baz", "3");
備忘録
もしかして今は習ってい可能性もある。
そもそも、当時教えて貰っていたけど覚えていなかったり、聞いていなかったりしたかも。
javaのバージョンによっては使えないのもあるかも。
参考
- Oracle Help Center, 入手先 https://docs.oracle.com/en/
- Javaラムダ式メモ(Hishidama's Java8 Lambda Expression Memo), 入手先 http://www.ne.jp/asahi/hishidama/home/tech/java/lambda.html
- Java9の新機能とサンプルコード - Qiita , 入手先 https://qiita.com/sizer/items/76d5f7dfe925640b3766#try-with-resource%E3%81%AE%E6%94%B9%E5%96%84
- Java8にもなったんだからFiles使おう - Qiita, 入手先 https://qiita.com/nishemon/items/a96cb6e14161f3ca8ee4
- Java 8 新機能つまみぐい - Qiita, 入手先 https://qiita.com/oohira/items/9c13f92815266cc5112c#fileslines