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;
}
-3
A
答えて
1
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());
}
0
なぜこれらの通貨コードを保持するためにマップを使用しない?これを使用する場合は、単にCurrencyMap.get(currency_code)を使用して、これらのすべてのif-elseを置き換えることができます。
1
多くの選択肢があります。一つは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. このコードでifステートメントの代わりにcaseステートメントを使用できますか?
- 2. .NET CFでHttpUtility.UrlEncodeの代わりに使用できるもの
- 3. Contacts.People.NOTESの代わりになるものは何ですか?
- 4. IncludeInAll(...)の代わりになるものは何ですか?
- 5. api/testsの代わりになるものは何ですか?
- 6. FilteredQueryDescriptorの代わりになるものは何ですか?
- 7. urllib.request.urlretrieveの代わりに使用するコマンドは何ですか?
- 8. アンドロイドスタジオのreadLine()の代わりに使用できるもの
- 9. フォームのチェックボックスに 'readonly'の代わりに使用できるものは何ですか?
- 10. Java JNAでLPTSTRの代わりに使用するものは?
- 11. 数字を追加するときに "for"ループの代わりに使用するものは何ですか?
- 12. Goにタイプ名の代わりにマップリテラルで使用できるものは?
- 13. このような状況でevalに代わるものは何ですか?
- 14. WSE2QuickStartServerとは何ですか?これの代わりに他の証明書を使用できますか?
- 15. Reactのテキストエリアでwindow.getLocation()の代わりに使用するもの?
- 16. python 3でstr.translateに代わるものは何ですか?
- 17. ここでは、100行のコードを書く代わりにforループを使用できますか?
- 18. TableNameの代わりにSQLステートメントで変数を使用
- 19. sscanfの代わりに何を使うべきですか?
- 20. isinstance()の代わりに何を使うべきですか
- 21. LoadWithPartialName()の代わりに何を使うべきですか?
- 22. セッションの代わりに何を使うべきですか?
- 23. iOS 7で廃止予定のregionMonitoringAvailableの代わりに使用するものは何ですか?
- 24. Rails 5のコントローラでafter_commitの代わりに使用するものは何ですか?
- 25. iphoneでCommonCryptoの代わりに使用する方法は何ですか?
- 26. でも、HTTPSの代わりにHTTPを使用できますか?
- 27. iText 7のチャンクに代わるものは何ですか?
- 28. computationaly-heavyクエリのfind_by_sqlに代わるものは何ですか?
- 29. Asp.Net Core 2.0のHttpcontext.Current.Request.Filesに代わるものは何ですか?
- 30. .NET CoreのWebRequestHandlerに代わるものは何ですか?
https://docs.oracle.com/javase/8/docs/technotes/guides/language /strings-switch.html –
enumを使用するか、スイッチ – Rugal
を試してみると、この質問の1つのループをexample sirと説明できますか? –