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); } }