应该将哪些参数发送到此Java方法:
public void resume(Collection<TopicPartition> partitions)
更多详情here。
我可以看到<TopicPartition>
是一个带有此签名的Java类:
TopicPartition(String topic, int partition)
但在此之后,Java上面有一个关键字partitions
方法。
它是3个参数还是2个或1个?
请有人描述我应该如何阅读这种签名。
感谢。
答案 0 :(得分:2)
让我们一步一步地完成它:
首先,当然只有一个名为'partitions'的参数
public void resume(Collection<TopicPartition> partitions)
public
是访问修饰符,这意味着此方法可以从任何地方看到
void
是返回类型,表示没有返回值
resume
是方法名称/标识符
Collection<TopicPartition> partitions
更难以解释:
接口'集合'后跟一个Type(TopicPartitions)意味着您可以向该方法输入任何TopicPartition对象集合。 E.g:
List<TopicPartition> list = new LinkedList<>();
resume(list); // valid, sind List or more exact LinkedList are a Collection
Queue<TopicPartition> qq = new PriorityQueue<>();
resume(qq); // valid, sind Que or more exact PriorityQueue are a Collection
语法Collection<Type>
是Java Generics的一部分,您可以仔细查看this tutorial。
您在此处称为关键字('分区')的是根本没有关键字,而只是该输入参数的名称/标识符。您必须为每个参数指定一个名称 - 因此您可以在方法代码中识别它。
在这个示例中,您可以将“分区”重命名为您想要的任何内容,我会为“partCollection”之类的内容进行代码
void,return,public,private,static,class, ......这些都是关键字。
第二,TopicPartition和你在这里引用的方法是TopicPartition类的构造函数,它需要2个参数:String topic
和int partition
而不仅仅是一个方法。
构造函数是在实例化类时调用的方法(例如使用new
关键字创建对象)。
所以给你一个更详细的例子:
List<TopicPartition> list = new LinkedList<>();
list.add(new TopicPartition("part1", 1));
list.add(new TopicPartition("part2", 2));
resume(list);
// resume has now been called with argument of a list (which is a collection)
// containing two TopicPartition objects whit part1, part2 and 1,2 as
// construction arguments