我正在尝试学习Spring Batch,并且这本书提供了示例接口类,但是命名约定使我无法接受。
public interface ItemProcessor<I,O> {
O process(I item) throws Exception;
}
我以前从未在类名中看到过参数。它们是出于实际目的还是只是作为指导?如果更改了类名,以下代码会有什么不同?
public interface ItemProcessor {
O process(I item) throws Exception;
}
最佳答案
您正在谈论generics。I
和O
是该类的通用参数。
您可以将ItemProcessor
视为ItemProcessor
和I
的“ O
”。
提示泛型如何工作的最简单方法是考虑类Box
。
现在一盒是什么?
class Box<? extends Number>
...是
Box
的Number
。等等