Java-理解方法签名

Java-理解方法签名,java,generics,methods,apache-kafka,Java,Generics,Methods,Apache Kafka,应将哪些参数发送到此Java方法: public void resume(Collection<TopicPartition> partitions) public void resume(集合分区) 更多细节 我可以看到是一个具有以下签名的Java类:TopicPartition(String-topic,int-partition)但是在这之后,在上面的Java方法中有一个关键字partitions 那么它是3个参数还是2个或1个 请有人描述一下我应该如何阅读这种签名 谢谢。

应将哪些参数发送到此Java方法:

public void resume(Collection<TopicPartition> partitions)
public void resume(集合分区)
更多细节

我可以看到
是一个具有以下签名的Java类:
TopicPartition(String-topic,int-partition)

但是在这之后,在上面的Java方法中有一个关键字
partitions

那么它是3个参数还是2个或1个

请有人描述一下我应该如何阅读这种签名


谢谢。

让我们一步一步地看一遍:

首先,当然只有一个参数名为“partitions”

 public void resume(Collection<TopicPartition> partitions)
语法
集合
是Java泛型的一部分,您可以仔细查看它

这里所谓的关键字(“partitions”)根本不是关键字,只是输入参数的名称/标识符。必须为每个参数指定一个目标名称,以便在方法代码中识别它

在本例中,您可以将“partitions”重命名为任何您想要的名称,我可以保证类似“partCollection”的名称

无效、返回、公共、私有、静态、类。。。这些是关键词

Second,TopicPartition,这里引用的方法是类TopicPartition的构造函数,它需要两个参数:
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
List List=newlinkedlist();
添加(新主题分区(“第1部分”,1));
添加(新主题分区(“第2部分”,第2部分));
简历(名单);
//现在已使用列表(集合)的参数调用resume
//包含两个TopicPartition对象,其中part1、part2和1,2为
//构造论点

该方法需要一个参数,一个
集合
。谢谢。这个参数看起来像是一个由两个参数组成的类
TopicPartition(stringtopic,int partition)
。那么,期望发送字符串和int还是一个包含这两个值的集合(可能是一个映射?
TopicPartition(字符串主题,int分区)
是一个构造函数,而不是一个类。类没有签名,只有方法和构造函数有。回答得好。我建议的唯一补充是提及他所描述的内容的适当术语。即“Java泛型”。如果您添加一个链接来解释Java泛型的更多细节,这也会很有帮助。只需深入查看一下
TopicPartition
。我可以在这里看到()它应该是一个具有此签名的类
TopicPartition(stringtopic,int partition)
。基于这个事实-这是一个正确的数据结构吗?@Gewure您是否知道Scala方法对此的外观?可能是这样的:
def kafkaResume(topicPart:scala.collection.immutable.List[TopicPartition])={consumer.resume(topicPart.asJava)}
?如果是,人们会如何使用Scala调用这个方法?是
列表
正确的数据结构(在Scala中)还是
映射
?谢谢。@Joe我不知道scala(此外我知道javas泛型最初起源于scala),也不知道kafka-但给你一个提示:kafkaresume方法以不可变列表为参数-因此列表列表=新的不可变列表();将是Java中正确的类型。
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