52

Issue: 明示的なロケールなしで SimpleDateFormat を直接使用する Id: SimpleDateFormat

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

なぜ「ローカルフォーマットを取得するには、getDateInstance()、getDateTimeInstance()、または getTimeInstance() を使用するか、新しい SimpleDateFormat(String template, Locale locale) を使用して、ASCII 日付の場合は Locale.US を使用する」というエラーがこの行に表示されるのはなぜですか。

http://developer.android.com/reference/java/text/SimpleDateFormat.html

4

3 に答える 3

12

それはばかげた糸くずの警告です。SimpleDateFormat コンストラクターのソース コードを見ると、デフォルトのロケールが取得されます。

public SimpleDateFormat(String pattern) {
    this(pattern, Locale.getDefault());
}

したがって、コードに追加することは冗長であり、不必要に冗長です。Locale.getDefault() は、ユーザーのデバイスが設定されているため、ほとんどの場合、必要なものです。何らかの理由で常に返す必要がある場合、たとえば、ユーザーの言語が何に設定されていても「Monday」を返す必要がある場合は、Locale.US を指定できますが、それはまれな状況のようです。

最善の方法は、ダム インスペクションを無効にすることです。

于 2015-11-12T23:48:06.210 に答える