java - 使用mapstruct从字符串到枚举

标签 java enums mapstruct

我想使用mapstruct将String转换为枚举

enum TestEnum {
   NO("no");
   String code;

   TestEnum(String code) {
     this.code = code
   }

   public String getCode() {
    return code;
   }
}

我有一个从服务获得的代码,我想将此代码转换为Enum,如何通过mapstruct轻松实现

最佳答案

这是一个使用抽象映射器的解决方案,但是如果您愿意,可以使用默认方法或类将其转换

@Mapper
public abstract class TestMapper {

    abstract Source toSource(Target target);
    abstract Target totarget(Source source);

    String toString(TestEnum test){
        return test.getCode();
    }
    TestEnum toEnum(String code){
        for (TestEnum testEnum : TestEnum.values()) {
            if(testEnum.equals(code)){
                return testEnum;
            }
        }
        return null;
    }
}

public class Source {    
    String value;    
    public String getValue() {
        return value;
    }    
    public void setValue(String value) {
        this.value = value;
    }    
}

public class Target {
    TestEnum value;
    public TestEnum getValue() {
        return value;
    }
    public void setValue(TestEnum value) {
        this.value = value;
    }
}

关于java - 使用mapstruct从字符串到枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570827/

相关文章:

java - 使用 BouncycaSTLe 与 PSK 的 TLS 连接

java - 使用 Hibernate/Spring 生成数据库更新脚本

java - proguard 是否将所有枚举转换为 int 或需要为此配置

java-11 - Mapstruct Java11 兼容吗?

java - 错误 : org. apache.hadoop.security.AccessControlException : Permission denied: user=root, access=READ_EXECUTE,

java - 类.forName ("com.mysql.jdbc.Driver").newInstance()

java - 是否可以用 Spock 模拟枚举?

c# - 创建动态枚举并尝试引用它因 BindingFailure 而失败

java - 将 java MapStruct 与 VSCode 结合使用

java - 通过 Mapstruct 重用装饰映射器