Java - понимание сигнатуры метода - PullRequest
0 голосов
/ 30 апреля 2018

Какие параметры должны быть отправлены этому методу Java:

public void resume(Collection<TopicPartition> partitions)

Подробнее здесь .

Я вижу, что <TopicPartition> - это класс Java с такой сигнатурой:
TopicPartition(String topic, int partition)
, но после этого в Java-методе есть ключевое слово partitions.

Так это 3 параметра или 2 или 1?

Пожалуйста, кто-нибудь опишите, как мне читать такие подписи.

Спасибо.

1 Ответ

0 голосов
/ 30 апреля 2018

Давайте пройдемся по шагам:

Первый , конечно, это только 1 аргумент, который называется 'partitions'

 public void resume(Collection<TopicPartition> partitions)
  • public - модификатор доступа, что означает, что этот метод виден везде

  • void - это тип возвращаемого значения, что означает отсутствие возвращаемого значения

  • resume - имя метода / идентификатор

Collection<TopicPartition> partitions немного труднее объяснить:

Интерфейс 'Collection', следующий за 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, с которой вы можете более подробно ознакомиться с этим руководством .

Здесь вы называете ключевое слово («разделы»): вообще без ключевого слова , а просто имя / идентификатор этого входного аргумента. Вы должны дать каждому аргументу имя назначения - чтобы вы могли идентифицировать его в коде методов.

в этом примере вы можете переименовать «разделы» на все, что захотите, я бы сказал, что-то вроде «partCollection»

void, return, public, private, static, class, ... это ключевые слова.

Second , 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
...