Android 开发问题:Cannot resolve method ‘repeat‘ in ‘String‘
·
public static String desensitizeIdCard(String idCard) {
if (idCard == null || idCard.isEmpty()) {
return idCard;
}
// 去除空格
idCard = idCard.trim();
int length = idCard.length();
// 长度小于等于 10 位时,直接返回原值,实际身份证号至少 15 位
if (length <= 10) {
return idCard;
}
String prefix = idCard.substring(0, 6);
String suffix = idCard.substring(length - 4);
int starCount = length - 10;
return prefix + repeatChar('*', starCount) + suffix;
return prefix + "*".repeat(starCount) + suffix;
}
- 在 Android 开发中,上述代码出现如下错误信息
Cannot resolve method 'repeat' in 'String'
问题原因
- String 的 repeat 是 Java 11 才引入的方法,项目使用的是 Java 8 或更低版本
处理策略
- 提供兼容 Java 8 的实现
private static String repeatChar(char c, int count) {
if (count <= 0) {
return "";
}
StringBuilder sb = new StringBuilder(count);
for (int i = 0; i < count; i++) {
sb.append(c);
}
return sb.toString();
}
public static String desensitizeIdCard(String idCard) {
if (idCard == null || idCard.isEmpty()) {
return idCard;
}
// 去除空格
idCard = idCard.trim();
int length = idCard.length();
// 长度小于等于 10 位时,直接返回原值,实际身份证号至少 15 位
if (length <= 10) {
return idCard;
}
String prefix = idCard.substring(0, 6);
String suffix = idCard.substring(length - 4);
int starCount = length - 10;
return prefix + repeatChar('*', starCount) + suffix;
}
更多推荐




所有评论(0)