서비스 컨테이너를 만들려고하고 메서드가 호출 될 때 사용되는 형식을 반영하는 방법을 알고 싶습니다. 아래 참조 :Java - 메서드의 일반 형식을 가져 오는 반사
public class ServiceContainer {
HashMap<Type, Object> services;
public ServiceContainer() {
services = new HashMap<Type, Object>();
}
public <T> void addService(Type t, T object) {
services.put(t, object);
}
public <T> void addService(T object) {
Type type = typeof(T);
services.put(type, object);
}
}
두 번째 addService를 사용하고 싶지만 다시 사용할 수없는 경우 다시 사용해야합니다.
편집 : 나는 addService에 대한 해결책을 찾은 것 같아요,하지만 지금은 같은 방법으로 해결할 수없는 또 다른 방법이있다 :
public class ServiceContainer {
HashMap<Class, Object> services;
public ServiceContainer() {
services = new HashMap<Class, Object>();
}
public <T> void addObject(T object) {
Class type = object.getClass();
services.put(type, object);
}
public <T> boolean containsService() {
}
public <T> T getService() {
services.get(
ServiceContainer.class.getMethod("getService", null)
.getGenericParameterTypes()[0]);
}
}
나는 종류의 지금 어둠 속에서 촬영 해요, 내가 어떤 문서에서 솔직히 말해야합니다 ...
containsService에 응답하는 방법은 무엇입니까? 클래스와 유형의 차이점은 무엇입니까? 자바 문서는 다소 모호합니다. –
클래스 리터럴 (예 : MyService.class) 또는 클래스 이름까지 containsService 메소드로 전달합니다. – Chii
Type이 무엇을 의미하는지 모르겠다. 나는 당신이 서비스의 유형을 지정하는 자신이 작성한 클래스라고 생각했다. (http://download.oracle.com/javase/1,5.0/docs/을 의미하지 않는다면) api/java/lang/reflect/Type.html - 귀하의 경우 유용하지 않을 것입니다. – Chii