public static Currency getByCurrencyCode(String pCurrencyCode){
if (CURRENCY_CODE_USD.equalsIgnoreCase(pCurrencyCode)){
return US_DOLLAR;
}
if (CURRENCY_CODE_HKD.equalsIgnoreCase(pCurrencyCode)){
return HK_DOLLAR;
}
if (CURRENCY_CODE_MYR.equalsIgnoreCase(pCurrencyCode)){
return MALAYSIAN_RINGGIT;
}
return null;
}
ответ
Вы можете заполнить Map<String, Currency>
и вернуть Currency
на основе имени (и сделать имя последовательно прописным или строчным). Что-то вроде,
private static Map<String, Currency> map = new HashMap<>();
static {
map.put(CURRENCY_CODE_USD.toLowerCase(), US_DOLLAR);
map.put(CURRENCY_CODE_HKD.toLowerCase(), HK_DOLLAR);
map.put(CURRENCY_CODE_MYR.toLowerCase(), MALAYSIAN_RINGGIT);
}
public static Currency getByCurrencyCode(String pCurrencyCode) {
return map.get(pCurrencyCode.toLowerCase());
}
Почему бы не использовать карту для хранения валюты currency_code->? Если используется, вы можете просто использовать CurrencyMap.get (currency_code), чтобы заменить все эти if-else.
Существует несколько альтернатив, которые вы могли бы использовать. Одним из них является switch
заявления:
public static Currency getByCurrencyCode(String pCurrencyCode) {
switch (pCurrencyCode.toLowerCase()) {
case CURRENCY_CODE_USD:
return US_DOLLAR;
case CURRENCY_CODE_HKD:
return HK_DOLLAR;
case CURRENCY_CODE_MYR:
return MALAYSIAN_RINGGIT;
default:
return null;
}
}
Однако, это требует, чтобы различные CURRENCY_*
переменных быть время компиляции String
констант и pCurrencyCode
не может быть null
. Я предположил, что переменные CURRENCY_*
имеют нижний регистр, но если они в верхнем регистре, просто используйте вместо этого pCurrencyCode.toUpperCase()
.
Другой подход заключается в определении карты от String
до Currency
объектов и посмотреть ответ непосредственно:
private static Map<String, Currency> sCurrencyMap;
static {
sCurrencyMap = new HashMap<>();
sCurrencyMap.put(CURRENCY_CODE_USD, US_DOLLAR);
sCurrencyMap.put(CURRENCY_CODE_HKD, HK_DOLLAR);
sCurrencyMap.put(CURRENCY_CODE_MYR, MALAYSIAN_RINGGIT);
}
public static Currency getByCurrencyCode(String pCurrencyCode) {
return sCurrencyMap.get(pCurrencyCode.toLowerCase());
}
- 1. Использование инструкции ifelse в R
- 2. mysql - Что следует использовать вместо инструкции IN?
- 3. что можно использовать вместо QRectF?
- 4. Почему я должен использовать float вместо int в этом коде?
- 5. Что происходит в этом коде?
- 6. Что нового в этом коде?
- 7. Что именно в этом коде
- 8. Что неправильно в этом коде
- 9. Что означает «$» в этом коде?
- 10. , что неправильно в этом коде
- 11. Что означает «*» в этом коде?
- 12. Что ошибка в этом коде
- 13. Что происходит в этом коде
- 14. Что ошибка в этом коде
- 15. Что дальше(); в этом коде?
- 16. Что% и & в этом коде?
- 17. Как использовать epoll вместо select в этом коде?
- 18. Как можно скорректировать номера в этом коде?
- 19. Что означает «вызов» в этом Java-коде
- 20. Как использовать значение p в качестве критерия в инструкции ifelse?
- 21. Можно ли использовать вместо перерыва в инструкции switch?
- 22. Что делает «& =» в этом коде C#?
- 23. Что происходит в этом коде C/Arduino?
- 24. Что означает знак {} в этом коде xaml?
- 25. Что не так в этом коде Angularjs?
- 26. В этом коде, зачем использовать закрытие?
- 27. Что ожидает функция в этом коде clojure?
- 28. Что делает лямбда в этом коде Python?
- 29. Что означает @Override в этом java-коде?
- 30. Использование trernary для инструкции ifelse в php
https://docs.oracle.com/javase/8/docs/technotes/guides/language /strings-switch.html –
Вы можете попытаться использовать перечисление или переключатель – Rugal
вы можете объяснить один цикл этого вопроса с помощью примера sir. –