3
我正在嘗試創建一個服務容器,並且想知道如何反映在調用方法時使用的類型。見下文: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? Class和Type有什麼不同? java文檔有點模糊 – 2011-05-08 03:01:42
我會傳入一個Class文字(例如,MyService.class),或者甚至是類的名字到containsService方法中。 – Chii 2011-05-08 05:03:18
我不知道你的意思是什麼類型 - 我認爲這是你自己寫的一個類,它指定了服務的類型(除非你的意思是http://download.oracle.com/javase/1,5.0/docs/ api/java/lang/reflect/Type.html - 在你的情況下這對你沒有用處 – Chii 2011-05-08 05:04:19