ClassToInstanceMap

com.google.common.collect.ClassToInstanceMap

public interface ClassToInstanceMap<B>extends Map<Class<? extends B>,B>

これはいいかも。実装は、

ImmutableClassToInstanceMap
MutableClassToInstanceMap

メソッド
<T extends B> T getInstance(Class<T> type)
<T extends B> T putInstance(Class<T> type, @Nullable T value)