责任链自动生成器
Chain of responsibility automatic generator
我有 8 个处理程序 class,有没有办法在 java 中动态创建链?
我的意思是,如果我现在有两个 classes:
处理程序A
处理程序B
处理链
HanddlerChain 将创建链,HandlerA->HandlerB,(使用循环从文件夹中读取所有 class 个名称)
当我添加 HandlerC 时,它会在没有任何交互的情况下自动添加,链变为 HandlerA->HandlerB->HandlerC。
-------------------------------------------- ----------
所以如果我有 String className = "HandlerA"
我使用私有字符串创建 HandlerA.class 实例的方式是什么?
File folder = new File("JavaClassesPath");
ArrayList<String> all = new ArrayList<>();
for (final File fileEntry : folder.listFiles()) {
if (!fileEntry.isDirectory()) {
all.add(fileEntry.getName().substring(0, fileEntry.getName().lastIndexOf('.')));
}
}
String className = "PackageName";
for (String s: all) {
if (!s.equals("AbstractClassName")) {
Class<?> clazz = Class.forName(className + '.' + s);
Constructor<?> ctor = clazz.getConstructor();
Object object = ctor.newInstance();
allHandlers.add((RequestHandler) object);
}
}
for(int i=0; i<allHandlers.size()-1; i++){
allHandlers.get(i).setNextHandler(allHandlers.get(i+1));
}
我有 8 个处理程序 class,有没有办法在 java 中动态创建链?
我的意思是,如果我现在有两个 classes:
处理程序A
处理程序B
处理链
HanddlerChain 将创建链,HandlerA->HandlerB,(使用循环从文件夹中读取所有 class 个名称)
当我添加 HandlerC 时,它会在没有任何交互的情况下自动添加,链变为 HandlerA->HandlerB->HandlerC。
-------------------------------------------- ----------
所以如果我有 String className = "HandlerA"
我使用私有字符串创建 HandlerA.class 实例的方式是什么?
File folder = new File("JavaClassesPath");
ArrayList<String> all = new ArrayList<>();
for (final File fileEntry : folder.listFiles()) {
if (!fileEntry.isDirectory()) {
all.add(fileEntry.getName().substring(0, fileEntry.getName().lastIndexOf('.')));
}
}
String className = "PackageName";
for (String s: all) {
if (!s.equals("AbstractClassName")) {
Class<?> clazz = Class.forName(className + '.' + s);
Constructor<?> ctor = clazz.getConstructor();
Object object = ctor.newInstance();
allHandlers.add((RequestHandler) object);
}
}
for(int i=0; i<allHandlers.size()-1; i++){
allHandlers.get(i).setNextHandler(allHandlers.get(i+1));
}