나는 우리의 프로젝트에 대한 구글 GIN을 시도하고있다 그리고 나는 일반적인 인터페이스와 해당 인터페이스의 일반적인 구현이 경우 건너 온 : 주입GIN을 사용하는 일반 구현에 대한 일반 인터페이스의 기본 바인딩을 만드는 방법은 무엇입니까?
public interface IFace<T> {
void setEntry(T t);
}
public class Face<T> implements IFace<T> {
public void setEntry(T t) {
}
}
지금 내가 IFACE을 필요로하는 인터페이스의 사용자가을
public class IFaceUser {
private IFace<String> face;
@Inject
public IFaceUser(IFace<String> face) {
this.face = face;
}
}
내가 bind(IFace.class).to(Face.class);
와 구현에 대한 인터페이스를 결합하려고하면 주입
Deferred binding result type 'IFace' should not be abstract
,691 실패 : 생성자
그래서 GIN은 IFace<String>
에 대한 바인딩을 찾지 못하며 IFace
으로 돌아가서 바인딩을 사용하고 GWT.create(IFace.class)
을 시도합니다.
나는 또한 bind(new TypeLiteral<IFace>(){}).to(new TypeLiteral<Face>(){});
과 bind(new TypeLiteral<IFace<?>>(){}).to(new TypeLiteral<Face<?>>(){});
을 시도했지만 성공하지 못했습니다.
나는 IFace<String>
에서 Face<String>
으로 묶을 수 있다고 알고 있지만, 반복되는 코드가 많은 거대한 모듈로 이어질 수 있습니다. @ImplementedBy(Face.class)
을 사용하는 것도 가능하지만 옵션이 아닙니다.
마법이 필요합니까? bind(...).to(...)
조합이 필요합니까? GIN에서도 가능합니까?