Ing*_*das 5 java generics design-patterns
我正在使用Java中的责任链设计模式.链作为一个整体代表对某些类型的对象的请求.链中的每个"处理程序"负责处理所请求的1种单位.所有请求都以基本相同的方式处理,因此我尝试使用"Handler"类通用.所以在Handle类中我需要一个像这样的方法(处理本身是简化的,因为它只会模糊我的问题):
public class Handler<T>{
int required;
Handler<?> next;
public void handle(Object O){
if(o instanceof T){
required --;
}else{
next.handle(o);
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是像这样的实例是不可能的.因为类型T在运行时没有明确存储(或者这是我在互联网研究中所理解的).所以我的问题是:什么是最好的选择?
通过使用构造函数参数定义处理程序支持的类,使用泛型实现处理程序:
public class Handler<T> {
private int required;
private Handler<?> next;
private Class<? extends T> c;
public Handler(Class<? extends T> c) {
this.c = c;
}
public void handle(Object o) {
if (c.isInstance(o)) {
required--;
} else {
next.handle(o);
}
}
// ...
}
Run Code Online (Sandbox Code Playgroud)