Если вы хотите узнать, есть ли в Enum строка, я бы добавил Hashmap в наш Enum и добавил бы наше значение в качестве ключа.Таким образом, я могу просто получить и проверить, существует ли он.
public enum PlayerSpeed {
// Type of speeds.
SLOW("Slow"),
FAST("Fast"),
VERY_FAST("Running");
// String value that represents each type of speed.
public final String value;
// Hash map that let us get a speed type by it's String value.
private static Map map = new HashMap<>();
// Private constructor.
private PlayerSpeed(String value) { this.value = value; }
// Fill our hash map.
static {
for (PlayerSpeed playerSpeed : PlayerSpeed.values()) {
map.put(playerSpeed.value, playerSpeed);
}
}
/**
* Given a string, look it up in our enum map and check if it exists.
* @param searchedString String that we are looking for.
* @return True if the string is found.
*/
public static boolean containsString(String searchedString) {
return map.get(searchedString) != null;
}
}
Затем все, что вам нужно сделать, это проверить, существует ли String, используя метод containsString нашего Enum.
Player player = new Player("FAST");
if(PlayerSpeed.constainsString(p.getType())) {
System.out.println("Player type is : " + p.getType());
}
Я уже пробовал этот код, и он работает как задумано.Пожалуйста, дайте мне знать, если это поможет.