Simpleは、そのままではインターフェイスを処理できません。
org.simpleframework.xml.core.InstantiationException: Cannot
instantiate interface com.bitplan.restmodelmanager.Package for
interface com.bitplan.restmodelmanager.Package at
org.simpleframework.xml.core.ObjectFactory.getInstance(ObjectFactory.java:68)
ObjectFactoryのソースコード(以下を参照)は、ストラテジーがインターフェースのクラスを解決できることを示しているようです。私見では、guiceインジェクターをここで使用できます。そのような戦略のための良い(おそらく既存の)解決策は何でしょうか?
/**
* This method will instantiate an object of the field type, or if
* the <code>Strategy</code> object can resolve a class from the
* XML element then this is used instead. If the resulting type is
* abstract or an interface then this method throws an exception.
*
* @param node this is the node to check for the override
*
* @return this returns an instance of the resulting type
*/
@Override
public Instance getInstance(InputNode node) throws Exception {
Value value = getOverride(node);
Class expect = getType();
if(value == null) {
if(!isInstantiable(expect)) {
throw new InstantiationException("Cannot instantiate %s for %s", expect, type);
}
return context.getInstance(expect);
}
return new ObjectInstance(context, value);
}