ImageRegistryをガリガリとな。

id:y-komoriさんが更に改良してくだすった。とりあえず、


イイ!スゲーイイ!!


僕の書いたコードより断然イイです。
Holderのフィールドが、ImageでもImageDescriptorでも良いのがすんばらしい。
っつうか、何で、これ思いつかなかったんだろ…ガッカリ。


どっちでもイイと思わなかったのには、それなりに理由があった筈なんですが、
サッパリ思い出せません。


一点だけ難癖をつけるとすれば、ここの処理が重複しているので、

if (isAssignableFrom(Image.class, field)) {
    Image image = imageRegistry.get(key);
    if (image != null) {
        FieldUtil.set(field, null, image);
    } else {
        logBindingFailed(clazz, field);
    }
} else if (isAssignableFrom(ImageDescriptor.class, field)) {
    ImageDescriptor descriptor = imageRegistry.getDescriptor(key);
    if (descriptor != null) {
        FieldUtil.set(field, null, descriptor);
    } else {
        logBindingFailed(clazz, field);
    }
}

こういう風に、切り出して重複が消せるかなぁ…って事だけです。

protected static void injectField(final Class clazz, Field field, Object o) {
    if (o != null) {
        FieldUtil.set(field, null, o);
    } else {
        logBindingFailed(clazz, field);
    }
}