Genericsが邪魔
このエントリの中に『Genericsは失敗だった』という話が出てきます。この『失敗』の文脈からは外れるかもしれませんが、Beans Bindingを使っていると、Genericsを邪魔に感じることが非常に多いです。
Beans Bindingで、バインディングの根幹になるorg.jdesktop.binding.Bindingのクラス定義は以下です。
public abstract class Binding<SS, SV, TS, TV>
このクラスは、SS型のオブジェクトが持つSV型のプロパティと、TS型のオブジェクトが持つTV型のプロパティをバインドします。Genericsのおかげで型を特定できて便利!…な訳ないですね。Bindingを作るたびに4つもの型を考えないといけなくて、うざいことこの上ないです。
Swingコンポーネントとのバインディングを作成するユーティリティクラスorg.jdesktop.swingbinding.SwingBindingsのメソッドは、以下のような調子。
public static <E, SS, TS> JTableBinding<E, SS, TS> createJTableBinding( AutoBinding.UpdateStrategy strategy, SS sourceObject, Property<SS, List<E>> sourceListProperty, TS targetObject, Property<TS, ? extends JTable> targetJTableProperty);
もう何がなんだか。結局Genericsには付き合いきれなくなって、@SuppressWarnings("unchecked")で完全無視してしまいます。
個人的には、バインディング、コンバータ、バリデータ辺りのフレームワークにGenericsは不要だと思っているんですけど、どうなんでしょうね。