, API, , TypeLiteral . . - , :
for (Map.Entry<Key<?>, Binding<?>> entry
: injector.getBindings().entrySet()) {
Type type = entry.getKey().getTypeLiteral().getType();
if (!(type instanceof ParameterizedType)) continue;
ParameterizedType parameterized = (ParameterizedType) type;
if (parameterizedType.getRawType() != Foo.class) continue;
Type parameter = .getActualTypeArguments()[0]
if (!(parameter instanceof Class)) continue;
Class<?> parameterClass = (Class<?>) parameter;
if (!Bar.class.isAssignableFrom(parameterClass)) continue;
results.add(entry);
}
, -, API. Guice, TypeLiteral.isAssignableFrom(TypeLiteral). , !