我想弄清楚如何使用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