다음 Java 코드는 Guice 바인딩을 설정합니다. 바인딩을 설정하는 configure
의 구현을 제공하는 익명 하위 클래스 과 익명 하위 클래스 TypeLiteral
을 사용하여 특정 유형 매개 변수 (as described here)에 대해 Map
에서 HashMap
의 바인딩을 만듭니다.Xtend를 사용하여 매개 변수화 된 클래스의 Guice 바인딩을 간결하게 정의하는 방법은 무엇입니까?
injector = Guice.createInjector(new AbstractModule() {
@Override protected void configure() {
bind(new TypeLiteral<Map<String, Event>>() {})
.to(new TypeLiteral<HashMap<String, Event>>() {});
}
});
는 는
어떻게 Xtend이 쓸 수 ?
Xtend는 익명 클래스 또는 중첩 클래스 (문서에는 언급되지 않았지만 작동하는 구문을 추측 할 수 없음) 구현을 지원하지 않습니다. 그래서 내 AbstractModule
과 각각의 TypeLiteral
구현을 별도의 Xtend 파일에 정의해야합니다 ...별로 간결하지 않습니다. 이 일을 잘하기 위해 Xtend 또는 Guice 트릭이 누락 되었습니까?
안녕하세요 크리스천 - 좋은 생각이고 내 접근 방식입니다. 그러나 실제 클래스는 Java에 머물러 있어야합니다. 그렇지 않으면 모든 TypeLiteral 구현에 대한 실제 클래스도 선언해야합니다. 실제로는 위 코드에 표시된 코드가 2 개 이상 있습니다. Xtend 솔루션, 또는 문제를 해결할 수있는 다른 Guice API가 있는지 여부에 관심이 있습니다. – rewbs
xtend 홈페이지를 인용 해 보겠습니다. * Xtend는 Java를 모두 함께 대체하는 것이 아니라 Java가 빛나지 않는 상황에서 편리한 대체 방법입니다. * guice 모듈은 xtend에서 끝내지 않을 것입니다. –