javadoc: @version и @since

LIST больше не знает, каков его универсальный параметр во время выполнения. Другими словами, если я передаю 'x' методу, вы можете сказать, что это List (например, x.getClass() даст вам что-то листовое, а x instanceof List будет true), но нет способ сказать, что это список животных. Там нет метода .getComponentType() или любого другого.

Объекты в списке знают, что они животные, поэтому, как только вы получите один объект (что делает цикл for, который вы написали в своем коде), вы можете спросить объект, что это такое.

Представьте, что в этом списке нет ничего, например. Нет способа сказать. Также учтите следующее:

List<Number> numbers = new ArrayList<Number>();
List<Integer> integers = new ArrayList<Integer>();
numbers.add(Integer.valueOf(1));
integers.add(Integer.valueOf(1));

Отсюда вы можете запросить первый элемент в любом списке, и он будет иметь тип java.lang.Integer. Но нет никакого способа узнать, что список numbers был определен, чтобы принимать любое число (целое число является подтипом числа), а integers было определено, чтобы принимать только целые числа.

43
задан Neuron 20 April 2018 в 09:52
поделиться

2 ответа

Эти @version тег должен быть текущей версией выпуска или рассматриваемого файла. %I%, %G% синтаксис является макросами, которые программное обеспечение управления исходным кодом заменило бы текущей версией файла и даты, когда файл проверяется.

Эти @since тег должен использоваться для определения, какая версия Вы добавили метод, класс, и т.д. Это - Ваша подсказка другим разработчикам, что они должны только ожидать метод, когда они будут работать против конкретной версии пакета. Я рассмотрел бы эти uber-важные части документации, если Вы поставляете свой код как библиотека, предназначенная, чтобы кто-то еще использовал.

64
ответ дан Patrick M 26 November 2019 в 22:47
поделиться

Я не вижу, как они являются взаимоисключающими. Каждый используется для определения версии, и другой используется для описания с тех пор, когда метод там. Например:

/**
 * Does Whatever
 * @version 1.2.3
 * @since 1.2.0
 *
 */
public void myMethod() {
    // .......
}

Относительно символов Вы упомянули, они кажутся собственными, и в любом случае у меня нет подсказки, что они имеют в виду.

8
ответ дан gvlasov 26 November 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: