当前位置: 首页 > 知识库问答 >
问题:

根据枚举值设置类字段

湛骏祥
2023-03-14
enum Temp {
  VALUE1(Tempclass::getField1)
  VLAUE2(Tempclass::getField2)
  private final Function<Tempclass, String> type;
}

class Tempclass {
  String field1;
  String field2;
}

使用上面的代码,我可以根据枚举值获取Tempclass字段的值。现在如何设置字段的Tempclass基于枚举值例如:如果枚举VALUE2被选中,那么我需要设置Tempclassfield d2到输入值。

共有2个答案

吕霄
2023-03-14

如果我没弄错你的问题,临时课程如下

@Getter
@AllArgsConstructor
public class TempClass {
    private String field1;
    private String field2;
}

和枚举类作为

public enum TempEnum {
    VALUE1(TempClass::getField1), VALUE2(TempClass::getField2);

    private final Function<TempClass, String> type;

    TempEnum(Function<TempClass, String> type) {
        this.type = type;
    }

    public String getType(TempClass tempClass) {
        return this.type.apply(tempClass);
    }
}

最后得到如下值

public class TempMain {
    public static void main(String[] args) {
        TempClass pointer = new TempClass("some value", "an other value");
        System.out.println(TempEnum.VALUE1.getType(pointer));
        System.out.println(TempEnum.VALUE2.getType(pointer));
    }
}
佴阳曦
2023-03-14

使用双消费者

VALUE1(Tempclass::getField1, Tempclass::setField1),
VALUE2(Tempclass::getField2, Tempclass::setField2);

private final BiConsumer<Tempclass, String> setter;

从枚举中获取setter,并将值传递给BiConsumer的accept方法

enumInstance.getSetter().accept(tempClassInstance, "some-value");

 类似资料:
  • 我正在使用Jackson的ObjectMapper直接从收到的构建我的。为此,我用注释来注释我的字段(在本例中,字段是抽象方法,因为我使用AutoValue来简化样板文件)。 现在,我的POJO中的一些字段是,其中JSON显然包含一个常规字符串。我想以某种方式验证,在构建对象之前,这些JSON字段确实提交给给定的枚举类型。 下面是一个例子。 此属性的类型为,对应的JSON字段为ie.“Messag

  • 我正在尝试根据枚举值检索一个值。基本上,假设我有以下枚举: 通过执行auth.key.get()将返回“MyKey”,而auth.mail.get()将返回“MyMail”。我搜索了一下,但没有找到答案,我之前没有尝试过任何事情,因为我完全不知道如何开始。谢谢,祝你有个愉快的一天

  • 问题内容: 有没有一种方法可以在构造时通过Spring IoC设置此类枚举值? 我想做的是在类加载时注入在下面的代码片段中硬编码的值: 假设必须将应用程序部署在Nanos“几乎免费”的德国或法拉利“负担不起”的印度。在这两个国家中,只有三辆汽车(确定性集合),不多不少,因此是一个枚举,但它们的“内部”值可能不同。因此,这是不可变内容的上下文 初始化 的情况。 问题答案: 您是要设置自己吗? 我认为

  • 问题内容: 我有一个枚举的类对象(我有一个),我需要获取此枚举表示的枚举值的列表。该静态函数有我需要什么,但我不知道怎么去从类对象访问它。 问题答案:

  • 问题内容: 我们有一个带有枚举字段-的实体,我们想使用JPA注释-为它设置默认值。 但是,当我们将实体保存到数据库时,此字段的值为和。对于布尔字段- 正确的默认值()已保存。 如果改为使用:,则会在保存时得到以下异常: 我们做错了什么?为什么它仅适用于布尔值? 问题答案: 当某些SQL代码在未为emailCommunicationStatus列指定任何值的情况下插入一行时,您所做的工作很有用。在这