代码之家  ›  专栏  ›  技术社区  ›  Joe

Java-了解方法签名

  •  -1
  • Joe  · 技术社区  · 6 年前

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

    public void resume(Collection<TopicPartition> partitions)
    

    更多详细信息 here

    我看得出来 <TopicPartition> 是具有以下签名的Java类:
    TopicPartition(String topic, int partition)
    但在那之后,还有一个关键词 partitions 在上面的Java方法中。

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

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

    谢谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gewure    6 年前

    让我们一步一步地进行:

    第一 ,当然只有一个名为“partitions”的参数

     public void resume(Collection<TopicPartition> partitions)
    
    • public 是访问修饰符,这意味着此方法随处可见

    • void 是返回类型,表示没有返回值

    • resume 是方法名称/标识符

    Collection<TopicPartition> partitions 更难解释:

    接口“Collection”后跟一个类型(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泛型的一部分,您可以仔细查看 this tutorial

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

    在本例中,您可以将“partitions”重命名为任何您想要的名称,我可以保证类似“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