Java

[Java] JDBCドライバもサービスプロバイダーでできてる

前回 はサービスプロバイダーを作って見たけど、試しにJDBCドライバを実装してみよう(中身はないけど)。 サービスに相当するものはjava.sql.Driverインターフェースとして用意されているので、これを実装する。 大事なのはスタティックイニシャライザで DriverM...

Java

[Java] サービスプロバイダーを作ってみよう 〜Java8以前〜

サービスと言っても、今回やろうとしているのはWebサービスとかではなくJavaが備えているモジュール切り替えの仕組み。 例えば、JDBCドライバは様々なDBMSに対応しているけど、インターフェースに従ってさえいれば、切り替えは比較的容易になっている。 登場人物 登場人物はサ...

Java ジェネリクス

[Java] ジェネリックメソッドの戻り値は境界ワイルドカード型にしない

前回 に続き、Effective Javaネタ。 PECS Effective Java 項目31 APIの柔軟性向上のために境界ワイルドカードを使う によると"最大限の柔軟性のためには、プロデューサ(生産者)かコンシューマ(消費者)を表す入力パラメータに対してワイ...

Java パフォーマンス マルチスレッド

[Java] ConcurrentHashMapとHashMapの非互換性

Effective Javaによると Effective Java 第3版の項目81 "waitとnotifyよりも並行処理ユーティリティを選ぶ"によるとConcurrentHashMap.putIfAbsentをそのまま使うよりも、 public sta...