代码有点长不过没啥难度的。
import java.util.*;interface Processor<T,E extends Exception> {
void process(List<T> resultCollector) throws E;
}class ProcessRunner<T,E extends Exception>
extends ArrayList<Processor<T,E>> {
List<T> processAll() throws E {
List<T> resultCollector = new ArrayList<T>(); //标签
for(Processor<T,E> processor : this)
processor.process(resultCollector);
return resultCollector;
}
} class Failure1 extends Exception {}class Processor1 implements Processor<String,Failure1> {
static int count = 3;
public void
process(List<String> resultCollector) throws Failure1 {
if(count-- > 1)
resultCollector.add("Hep!");
else
resultCollector.add("Ho!");
if(count < 0)
throw new Failure1();
}
} class Failure2 extends Exception {}class Processor2 implements Processor<Integer,Failure2> {
static int count = 2;
public void
process(List<Integer> resultCollector) throws Failure2 {
if(count-- == 0)
resultCollector.add(47);
else {
resultCollector.add(11);
}
if(count < 0)
throw new Failure2();
}
} public class ThrowGenericException {
public static void main(String[] args) {
ProcessRunner<String,Failure1> runner =
new ProcessRunner<String,Failure1>();
for(int i = 0; i < 3; i++)
runner.add(new Processor1()); //我的问题就在这里,这里是将 new Processor1()对象加到runner对象中,为什么会加到上面resultCollector这个List中呢?
try {
System.out.println(runner.processAll());
} catch(Failure1 e) {
System.out.println(e);
} ProcessRunner<Integer,Failure2> runner2 =
new ProcessRunner<Integer,Failure2>();
for(int i = 0; i < 3; i++)
runner2.add(new Processor2());
try {
System.out.println(runner2.processAll());
} catch(Failure2 e) {
System.out.println(e);
}
}
}
不过这代码到底想要表达什么意思呢,我还是没看懂(准备第二遍看这书的时候再深入研究的),不过如果哪个好心人呢再帮我分析下,这段代码要说明什么问题,那真是谢谢了~~!!!
import java.util.*;interface Processor<T,E extends Exception> {
void process(List<T> resultCollector) throws E;
}class ProcessRunner<T,E extends Exception>
extends ArrayList<Processor<T,E>> {
List<T> processAll() throws E {
List<T> resultCollector = new ArrayList<T>(); //标签
for(Processor<T,E> processor : this)
processor.process(resultCollector);
return resultCollector;
}
} class Failure1 extends Exception {}class Processor1 implements Processor<String,Failure1> {
static int count = 3;
public void
process(List<String> resultCollector) throws Failure1 {
if(count-- > 1)
resultCollector.add("Hep!");
else
resultCollector.add("Ho!");
if(count < 0)
throw new Failure1();
}
} class Failure2 extends Exception {}class Processor2 implements Processor<Integer,Failure2> {
static int count = 2;
public void
process(List<Integer> resultCollector) throws Failure2 {
if(count-- == 0)
resultCollector.add(47);
else {
resultCollector.add(11);
}
if(count < 0)
throw new Failure2();
}
} public class ThrowGenericException {
public static void main(String[] args) {
ProcessRunner<String,Failure1> runner =
new ProcessRunner<String,Failure1>();
for(int i = 0; i < 3; i++)
runner.add(new Processor1()); //我的问题就在这里,这里是将 new Processor1()对象加到runner对象中,为什么会加到上面resultCollector这个List中呢?
try {
System.out.println(runner.processAll());
} catch(Failure1 e) {
System.out.println(e);
} ProcessRunner<Integer,Failure2> runner2 =
new ProcessRunner<Integer,Failure2>();
for(int i = 0; i < 3; i++)
runner2.add(new Processor2());
try {
System.out.println(runner2.processAll());
} catch(Failure2 e) {
System.out.println(e);
}
}
}
不过这代码到底想要表达什么意思呢,我还是没看懂(准备第二遍看这书的时候再深入研究的),不过如果哪个好心人呢再帮我分析下,这段代码要说明什么问题,那真是谢谢了~~!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货