我想弄清楚如何使用Java的泛型來構造一個程序,並且想知道我是在做一些根本性的錯誤還是隻是在代碼中缺少一個簡單的錯誤。使用泛型的Java泛型參數本身?
說我有一個通用類:
public interface Handler<T>{
public void process(T t);
}
另一個通用類需要處理程序爲通用參數(僞碼):
public interface Processor<S extends Handler<T>>{ //<== Error: cannot find symbol 'T'
public void addHandler(S u);
public void process(T t);
}
摘要實施提供樣板實現
public abstract class ProcessorImpl<.....> implements Processor<.....>{
...
}
將處理器看作是分派處理數據請求的對象a給任意數量的處理程序。具體的實例可以工藝管線的變化,攔截過濾器,事件系統等
我希望能夠使用它像下面這樣:
Handler<String> myHandler1 = new HandlerImpl<String>();
Handler<String> myHandler2 = new HandlerImpl<String>();
Handler<Integer> myHandler3 = new HandlerImpl<Integer>();
Processor<Handler<String>> proc = ProcessorImpl<Handler<String>>();
proc.addHandler(myHandler1);
proc.addhandler(myHandler2);
proc.addhandler(myHandler3);//this should be an error!
我不能讓它開始工作。在紙上,它看起來應該是微不足道的,有什麼想法?
感謝
你說 '//錯誤!'。你的意思是你希望它是一個錯誤?或者編譯器發出一個你想避免的錯誤? – notnoop 2009-11-29 05:43:06
對不起,我應該更清楚。錯誤!」預計在最後一行。我想要那個錯誤。 – Shahbaz 2009-11-29 06:29:38
太好了。那麼我的回答實際上與這個問題有關! – notnoop 2009-11-29 07:12:29