You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Maven参数动态初始化对应语言的Java常量类?

实现方案

1. 重构常量类结构

Java静态字段无法被子类重写,原子类的STRING_TEXT是各自独立的类级别字段,无法通过父类动态获取对应子类的值,因此需要调整结构:

父类TestConstants

public abstract class TestConstants {
    public final String STRING_TEXT;

    protected TestConstants(String stringText) {
        this.STRING_TEXT = stringText;
    }

    // 静态工厂方法,根据系统参数返回对应语言的常量实例
    public static TestConstants getInstance() {
        // 默认使用英文环境
        String language = System.getProperty("language", "en-us");
        return switch (language.toLowerCase()) {
            case "pt-pt" -> new PortugueseConstants();
            case "en-us" -> new EnglishConstants();
            default -> throw new IllegalArgumentException("不支持的语言类型: " + language);
        };
    }
}

子类EnglishConstants

public class EnglishConstants extends TestConstants {
    public EnglishConstants() {
        super("Text in English.");
    }
}

子类PortugueseConstants

public class PortugueseConstants extends TestConstants {
    public PortugueseConstants() {
        super("Text in Portuguese.");
    }
}

2. 测试代码中使用

在测试类里通过工厂方法获取对应语言的常量实例:

public class ConstantTest {
    @Test
    public void verifyLanguageConstant() {
        TestConstants constants = TestConstants.getInstance();
        // 执行断言或业务逻辑
        System.out.println(constants.STRING_TEXT);
    }
}

3. Maven构建时传入语言参数

执行测试时通过-Dlanguage指定目标语言:

# 英文环境(默认)
mvn test -Dlanguage=en-us

# 葡萄牙语环境
mvn test -Dlanguage=pt-pt

内容的提问来源于stack exchange,提问作者Dušan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 16:38:15