Java泛型查询
我在Spring批处理StepBuilder类中看到了以下方法定义。这里第一个角括号有什么用Java泛型查询,java,generics,Java,Generics,我在Spring批处理StepBuilder类中看到了以下方法定义。这里第一个角括号有什么用 public <I, O> SimpleStepBuilder<I, O> chunk(int chunkSize) { return (new SimpleStepBuilder(this)).chunk(chunkSize); } public SimpleStepBuilder块(int-chunkSize){ return(newsimplestepbuilde
public <I, O> SimpleStepBuilder<I, O> chunk(int chunkSize) {
return (new SimpleStepBuilder(this)).chunk(chunkSize);
}
public SimpleStepBuilder块(int-chunkSize){
return(newsimplestepbuilder(this)).chunk(chunkSize);
}
第一个
是类型的定义。您正在定义一个通用“占位符”名称列表(以及它们的约束条件,可选),然后这些名称可以在方法或签名中代替“实”类型使用
第二个
是参数化SimpleStepBuilder
。正如您可以将ArrayList
参数化为ArrayList
,这里您将使用两种通用类型对simplestbuilder
进行参数化:I
和O
查看返回字符串的不同方法可能会有所帮助,相反,使用泛型类型参数来定义该方法的参数:
public <I, O> String chunk(I input, O output) {
return input.toString() + output.toString();
}
公共字符串块(I输入,O输出){
返回input.toString()+output.toString();
}
它定义了该方法本地的泛型类型I
和O
。它定义了I
和O
类型,在您的情况下,这些类型随后用于返回类型SimpleStepBuilder
。这意味着当您通过以下方式调用chunk方法时:yourObject..chunk(0)
,您将收到由Cat
和Dog
类型参数化的SimpleStepBuilder
实例,也就是说:O
对于(类型)变量来说不是一个好名字。在某些字体中,它看起来很像0
。