Java
Javaで特定のクラスに強く紐づく小さなクラスがあるとき、それをネストさせている書き方と、ネストさせずに1ファイル内に並列して置く書き方の両方をよくみる。どちらを使うと良いのか迷うことが多かったので、Effective Javaの項目24にあたってみた。 www.a…
Spring Boot + OpenAPI GeneratorでTodoリストのAPIサーバを作っている。OpenAPIでエンドポイントやリクエスト・レスポンスを定義するところは楽だったが、 OpenAPIで定義したリクエスト・レスポンスの型は自動で生成されたコードの中に定義されることがわか…
Mockitoはテストの際に何度も使ったことがあるが、mockやspy, injectmocks等の用語の意味をなんとなくでしか理解しておらず、使う際に何度も詰まってしまっていた。このたび、公式ドキュメントを改めて読み直してみたのでまとめておく。 javadoc.io mockとは…
ccc2019fall.java-users.jp 半年に一度のJavaカンファレンスです。個人的にこの半年は扱う技術範囲が広がり、自分の興味や課題意識も大きくなったので、今回は気になるセッションが増えました。 参加したのは以下の3つです。 入門 例外 github.com 例外処理…
Java 8以降には、メソッド参照というものがある。全くなじみがなく今まで触れずにいたが、調べてみるとラムダ式をさらに簡略化した記法らしい。 引数をパススルーしているかどうか Javaをメソッド参照に置き換えられるのは、主にパラメータをパススルーして…
最近Javaのドキュメントを読む機会が多いが、APIの中では普段の仕事であまり使わないジェネリクスが使われていることが多く、たちまち読めなくなってしまう。時間のあるうちに、ジェネリクスの理解を深めておきたい。 ジェネリクスはなぜ生まれたか 今では当…
Javaのテスト環境をJUnit 5にアップデートしてしばらく経った。JUnit 5にはいろいろな新機能があるけれど、中でも便利だと感じたのがParameterizedTestだった。 ParameterizedTestとは ParameterizedTestを使うと、同じ内容のテストを異なる入力値・出力値で…
今までJavaを書いてきた中で、定数クラスをゼロから設計した経験があまり多くなく、今でもよく迷ってしまう。そこで、実際のコードで定数定義をどのように行っているのかを見てみた。 以下のコードは、Google CloudのJavaライブラリで使われているもの。ソー…
新しいプロジェクトでJavaのコーディングルールが変わり、ラムダ式やStreamを積極的に使っていく方針になった。それなりに書き方はわかっているつもりでいたが、「今回は関数型インターフェースを多用することになるので、見た目が独特かもしれませんが慣れ…
今仕事で使っているコードではJavaからCassandraとMySQLを動かしているが、その両方で使っているのがPreparedStatement。 これはどういうものかというと、あらかじめクエリのひな形を用意しておいて、実際に投げるときに値をバインドするというもの。 例えば…
JVMでは並行処理を実現するために、スレッドを作ることができる。 並列処理を使わなくてもよい処理を書いていたが、せっかくなので公式ドキュメントを見ながらスレッドを作ってみた。 スレッドを作る方法 スレッドを作るには2つの方法がある。ひとつはThread…
最近Eclipse上でコードを実行した際によくわからない挙動が起きたが、先輩にデバッグツールの使い方を教えてもらって無事解決できた。 Eclipseに限らず、今までデバッグツールというものがよくわからなくてまともに使ったことがなかったのだが、今回使ってみ…