Как получить имя участника из интерфейса, который действует в Enum, Java

#java #interface

Вопрос:

Допустим, у меня следующий интерфейс :

 public interface NUMS {  public static final int ZERO = 0;  public static final int ONE = 1;  public static final int TWO = 2;  }  

Тогда у меня есть функция, которая возвращает значение int в диапазоне 0-2. Есть ли какая-либо возможность получить имя участника, которое представляет номер в интерфейсе?

экс:

функции возвращают 1, я хочу сопоставить его обратно с ОДНИМ, не используя карту/массив.

Спасибо!

Комментарии:

1. почему бы не использовать перечисление для этой цели?

2. Нет, это невозможно, кроме как использовать отражение или вручную сопоставлять все параметры.

3. Почему бы не использовать фактическое перечисление?

Ответ №1:

Технически, есть, используя отражение:

 String getConstantName(int value) {  // use reflection to check all fields of NUMS  for (Field f : NUMS.class.getFields()) {  try {  if (f.getInt(null) == value) {  return f.getName();  }  } catch (IllegalAccessException e) {  // ignore  }  }  return "";  }  

Но это только в образовательных целях, пожалуйста, не используйте подобные подходы в реальном коде. Как предлагали другие люди, просто используйте an enum .

Комментарии:

1. Спасибо! Я бы определенно использовал Enum, если бы мог, но я просто использую интерфейс, который написал кто-то другой, не могу его изменить.

2. @omrib40 затем, по крайней мере, кэширует результаты доступа к отражению в каком-либо одноэлементном строковом массиве или карте.