package com.lexicalscope.fluentreflection; import static ch.lambdaj.Lambda.convert; import static java.util.Collections.unmodifiableList; import java.util.List; import com.google.inject.TypeLiteral; final class ReflectedConstructorsImpl<T> implements ReflectedConstructors<T> { private final ReflectedTypeFactory reflectedTypeFactory; private final TypeLiteral<T> typeLiteral; public ReflectedConstructorsImpl(final ReflectedTypeFactory reflectedTypeFactory, final TypeLiteral<T> typeLiteral) { this.reflectedTypeFactory = reflectedTypeFactory; this.typeLiteral = typeLiteral; } @Override public List<FluentConstructor<T>> constructors() { return unmodifiableList(convert( typeLiteral.getRawType().getDeclaredConstructors(), new ConvertConstructorToReflectedConstructor<T>( reflectedTypeFactory, typeLiteral))); } }