Android 开发问题:Cannot resolve method ‘repeat‘ in ‘String‘

java 复制代码
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 的实现
java 复制代码
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;
}
相关推荐
baozhengw2 小时前
信创改造-SpringBootJar包改为WAR包部署Tomcat
java·tomcat
M1A12 小时前
基于 Spring AOP 构建系统操作日志:从注解设计到异步落库的完整实战
java
光头闪亮亮2 小时前
Fyne ( go跨平台GUI )项目实战-scanner摄像头扫码组件开发技术详解
android·go
RainCity2 小时前
Java Swing 自定义组件库分享(十五)
java·笔记·后端
farerboy2 小时前
23-Java 构造函数
java·后端
Android打工仔2 小时前
Continuation 到底是谁创建的?
android·kotlin
坚持的小马2 小时前
Rocketmq搭建操作步骤
java·rocketmq·java-rocketmq
DeepAgent3 小时前
AI Agent 工程实践(17):Agent 为什么需要可观测性(Observability)?
android·llm·agent
砚底藏山河3 小时前
多家股票数据接口对比、企业级股票数据API
java·python·金融·maven