4
나는 비 코드 작성자가 최소한의 코드 변경으로 새로운 "테스트"와 "테스트"유형을 매핑하고 의존성 주입에 Guice를 사용하는 쉬운 방법을 원했습니다. 나는 단순함을 좋아하지만 타입 안전성이 부족하지는 않다. 이 문제를 개선하기위한 제안이 있으십니까? 의존성 주입을위한 안전한 열거 형
public enum TestType {
TEST_TYPE_1("TEST-1", Test1.class),
TEST_TYPE_2("TEST-2", Test2.class),
TEST_TYPE_3("TEST-3", Test3.class),
TEST_TYPE_4("TEST-4", Test4.class),
TEST_TYPE_5("TEST-5", Test5.class);
private final String testType;
private final Class<TestIF> tester;
private <TestIF> TestType(String testType, Class<TestIF> tester) {
this.testType = testType;
this.tester = (Class<tester.TestIF>) tester;
}
public String toString() {
return this.testType;
}
public Class<TestIF> tester() {
return this.tester;
}
}
"테스트"
는 다음과 같이 인스턴스화 것 :TestIF tester = Guice.createInjector().getInstance(testType.tester());
tester.execute();
generic 타입 매개 변수와 구체적인 클래스 (인터페이스) 이름으로 'TestIF'를 사용하면 generics를 약간 혼란스럽게 여기는 경우가 있습니다. 그 모호성을 정리할 수 있습니까? –
일반 형식의 TestIF를 T extends TestIF로 바꾸면 어떻게됩니까? –
@GuillaumePolet 예, 도움이 필요하다고 생각합니다. 사용할 필요가 있습니까? 생성자에서 TestIF를 확장합니다. 필자의 테스트에서는 필자의 경우 TestIF를 구현해야한다. – Dustin