我不理解一个关于Java Consumer接口的例子中方法声明的意思。我在在线书籍(清单11.7)中找到了这个例子。
class Consumers {
public static <T> Consumer<T> measuringConsumer( Consumer<T> block){
return t -> {
long start = System.nanoTime();
block.accept( t );
long duration = System.nanoTime() - start;
Logger.getAnonymousLogger().info("Execution time (ns): " + duration);
};
}
}
在这个声明中,
<T> Consumer<T>
代表什么?难道不应该只有Consumer<T>
而没有第一个<T>
吗?
<T>
,会发生什么? - Oliver Charlesworth<T>
- 我的意思是,从技术上讲,你可以移除它,但那样就无法编译。 - luk2302measuringConsumer
是一个通用方法,如果您对此不熟悉,请阅读以下内容:https://docs.oracle.com/javase/tutorial/extra/generics/methods.html。 - Oleg