Error: the call causes portability problems because it has different locales

Error: the call causes portability problems because it has different locales

完整错误:调用导致可移植性问题,因为它具有不同的区域设置,这可能会导致意外输出。这也可能绕过自定义验证例程。

运行 一个针对我的代码的工具 我遇到这个问题取决于我的这部分代码:

 if ("paid".equals(type.toLowerCase())) {
        return PaymentType.PAID.getDescription();
    }

我真的不明白这段代码应该是什么问题?

toLowerCase()toUpperCase() 方法使用默认语言环境。根据语言环境和您正在转换的字符串中的字符,这可能会产生不同的结果。这有点像默认编码问题(除了不太可能咬你的屁股,除非你使用不常见的字符)。

您可以通过显式指定 toLowerCase(Locale.ENGLISH) 或仅使用 "paid".equalsIgnoreCase(type).

来避免警告