Есть ли способ разрешить только один тип в качестве атрибута в Java?

#java #types #static #attributes

#java #типы #статический #атрибуты

Вопрос:

У меня есть класс, и мне нужны только несколько статических атрибутов dype Pair<Integer, String> в этом классе. Не больше. Есть ли способ, которым я могу определить суперкласс или что-то еще, что невозможно добавить другой атрибут переменной.

Это так важно, чтобы у меня было несколько атрибутов, а не, например, список или перечисление.

Пример:

 public class Test {

  public static final Pair<Integer, String> a ...

  public static final Pair<Integer, String> b ...

  public static final Pair<Integer, String> c ...

}
 

Ответ №1:

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

Если вас это интересует: это непросто, и объяснение того, как это сделать, на порядок выходит за рамки разумного вопроса SO. Найдите в Интернете учебные пособия по обработке аннотаций.