У меня есть это в качестве класса перечисления валюты в моем приложении для Android
enum class Currency constructor(val symbol: String) {
GBP("£"),
EUR("€"),
USD("$");
}
Теперь currency.name()
возвращает EUR
и currency.getSymbol()
возвращает €
.
Этот классшироко используется в приложении.Изменение этого класса на большой набор значений (скажем, 100 - 150) валют увеличит размер dex + выделение памяти во время выполнения.
Использование StringDef решило бы эту проблему
public class Currency {
@Retention(SOURCE)
@StringDef({
GBP,
USD,
EUR
})
public @interface CurrencyDef {
}
public static final String GBP = "£";
public static final String EUR = "€";
public static final String USD = "$";
}
Но это не позволило бы мне получить символ из кода валюты и наоборот.
Нужны рекомендации / предложения по наилучшему подходу.
Заранее спасибо.