有没有一种方法可以让我在不使用Java12新交换机实现的情况下分配其中一个值?

有没有一种方法可以让我在不使用Java12新交换机实现的情况下分配其中一个值?,java,replace,switch-statement,Java,Replace,Switch Statement,这是代码,我可以做些什么来替换切换到语言级别11可用的东西 private final int MAX_AUTORES = switch (this.getClass().getSimpleName()) { case "Artigo", "Resumo" -> 8; case "Minicurso" -> 3; case "Monografia", "Palestra" -> 1; case "Relatorio

这是代码,我可以做些什么来替换切换到语言级别11可用的东西

private final int MAX_AUTORES = switch (this.getClass().getSimpleName()) {
        case "Artigo", "Resumo" -> 8;
        case "Minicurso" -> 3;
        case "Monografia", "Palestra" -> 1;
        case "RelatorioTecnico" -> 4;

        default -> throw new IllegalStateException("Valor inesperado: " + this.getClass().getSimpleName());
};

您可以使用
地图
进行解码,如图所示,将其放入函数Don't!超级类不应该知道它的子类。首先,因为它非常容易出错。让构造函数将
maxatores
作为参数,并让子类指定它们需要的值。这样,如果一个子类被重命名,这里不需要更改,并且如果添加了一个新的子类,编译器将强制您分配一个值,而不是等待它在运行时失败。或者,创建子类必须实现的抽象
getMaxAutores()
方法。这样,您就不会浪费空间为同一子类的每个实例重演相同的值。啊,当然。。。