Java

【Java】Nested Classの使いどころ

Javaで特定のクラスに強く紐づく小さなクラスがあるとき、それをネストさせている書き方と、ネストさせずに1ファイル内に並列して置く書き方の両方をよくみる。どちらを使うと良いのか迷うことが多かったので、Effective Javaの項目24にあたってみた。 www.a…

【Spring Boot】OpenAPI GeneratorのType Mappingで自作のドメインオブジェクトを使用する

Spring Boot + OpenAPI GeneratorでTodoリストのAPIサーバを作っている。OpenAPIでエンドポイントやリクエスト・レスポンスを定義するところは楽だったが、 OpenAPIで定義したリクエスト・レスポンスの型は自動で生成されたコードの中に定義されることがわか…

【Java】雰囲気でmockしていた自分のためのMockito再入門

Mockitoはテストの際に何度も使ったことがあるが、mockやspy, injectmocks等の用語の意味をなんとなくでしか理解しておらず、使う際に何度も詰まってしまっていた。このたび、公式ドキュメントを改めて読み直してみたのでまとめておく。 javadoc.io mockとは…

JJUG CCC 2019 Fallに参加しました

ccc2019fall.java-users.jp 半年に一度のJavaカンファレンスです。個人的にこの半年は扱う技術範囲が広がり、自分の興味や課題意識も大きくなったので、今回は気になるセッションが増えました。 参加したのは以下の3つです。 入門 例外 github.com 例外処理…

【Java】メソッド参照とラムダ式の関係

Java 8以降には、メソッド参照というものがある。全くなじみがなく今まで触れずにいたが、調べてみるとラムダ式をさらに簡略化した記法らしい。 引数をパススルーしているかどうか Javaをメソッド参照に置き換えられるのは、主にパラメータをパススルーして…

Javaのジェネリクスを理解する

最近Javaのドキュメントを読む機会が多いが、APIの中では普段の仕事であまり使わないジェネリクスが使われていることが多く、たちまち読めなくなってしまう。時間のあるうちに、ジェネリクスの理解を深めておきたい。 ジェネリクスはなぜ生まれたか 今では当…

JUnit 5で同じ流れのテストを繰り返すならParameterizedTestを使おう

Javaのテスト環境をJUnit 5にアップデートしてしばらく経った。JUnit 5にはいろいろな新機能があるけれど、中でも便利だと感じたのがParameterizedTestだった。 ParameterizedTestとは ParameterizedTestを使うと、同じ内容のテストを異なる入力値・出力値で…

GCPのJavaライブラリに見るenumの使い方

今までJavaを書いてきた中で、定数クラスをゼロから設計した経験があまり多くなく、今でもよく迷ってしまう。そこで、実際のコードで定数定義をどのように行っているのかを見てみた。 以下のコードは、Google CloudのJavaライブラリで使われているもの。ソー…

Javaの関数型インターフェースとラムダ式・Streamの関係

新しいプロジェクトでJavaのコーディングルールが変わり、ラムダ式やStreamを積極的に使っていく方針になった。それなりに書き方はわかっているつもりでいたが、「今回は関数型インターフェースを多用することになるので、見た目が独特かもしれませんが慣れ…

ドライバからDBを操作するときはPreparedStatementを使う

今仕事で使っているコードではJavaからCassandraとMySQLを動かしているが、その両方で使っているのがPreparedStatement。 これはどういうものかというと、あらかじめクエリのひな形を用意しておいて、実際に投げるときに値をバインドするというもの。 例えば…

Javaでスレッドを作ってみる

JVMでは並行処理を実現するために、スレッドを作ることができる。 並列処理を使わなくてもよい処理を書いていたが、せっかくなので公式ドキュメントを見ながらスレッドを作ってみた。 スレッドを作る方法 スレッドを作るには2つの方法がある。ひとつはThread…

Eclipseでのデバッグ超基本編

最近Eclipse上でコードを実行した際によくわからない挙動が起きたが、先輩にデバッグツールの使い方を教えてもらって無事解決できた。 Eclipseに限らず、今までデバッグツールというものがよくわからなくてまともに使ったことがなかったのだが、今回使ってみ…