当前位置: 首页 > 面试题库 >

为枚举构建通用的DynamoDBMarshalling

贺飞星
2023-03-14
问题内容

我正在使用Amazon Web Services SDK for Java for
DynamoDB;试图满足@DynamoDBMarshalling的接口

Class<? extends DynamoDBMarshaller<? extends Object>> marshallerClass();

我建立了一个接收任何枚举的编组器:

public class EnumMarshaller<T extends Enum<T>> implements DynamoDBMarshaller<T>
{
    @Override
    public String marshall(T getterReturnResult)
    {
        return getterReturnResult.toString();
    }

    @Override
    public T unmarshall(Class<T> clazz, String obj)
    {
        return Enum.valueOf(clazz, obj);
    }
}

问题是,当我尝试在字段上使用注释时,无法弄清楚:

public static enum MyEnum {BLA, BLA2}

@DynamoDBMarshalling(marshallerClass=EnumMarshaller<MyEnum>.class)
    public MyEnum getStatus()
    {
        return status;
    }

我无法在通用类型上调用.class,而其他一些尝试则出现了不同的错误。我开始认为与亚马逊签订合同是不可能的…


问题答案:

以下对我来说很好:

马歇尔:

public class EnumMarshaller implements DynamoDBMarshaller<Enum> {
    @Override
    public String marshall(Enum getterReturnResult) {
        return getterReturnResult.name();
    }

    @Override
    public Enum unmarshall(Class<Enum> clazz, String obj) {
        return Enum.valueOf(clazz, obj);
    }
}

在我的带有枚举的表类中:

@DynamoDBMarshalling(marshallerClass=EnumMarshaller.class)
@DynamoDBAttribute(attributeName = "MyEnum")
public MyEnum getMyEnum() {
   return myEnum;
}


 类似资料:
  • 我听到一些人建议在C++中使用枚举类,因为它们的类型安全。 但这到底意味着什么呢?

  • 和前面相似,解构 enum 方式如下: // 需要 `allow` 来消除警告,因为只使用了一个变量。 #[allow(dead_code)] enum Color { // 这三者仅由它们的名字来表示。 Red, Blue, Green, // 这些元组含有类似的 `u32` 元素,分别对应不同的名字:颜色模型(color models)。 RGB

  • 问题内容: 帮我了解泛型。说我有两个枚举作为内部类,如下所示: 我不想让两个枚举都实现一个接口,而不得不两次实现相同的方法,而是希望在外部类中有一个方法可以执行以下操作: 但是,此方法无法编译。我要尝试做的是找出字符串值是否为枚举值的名称(在任何枚举中),无论是蔬菜,水果,还是其他。不管这实际上是否是冗余方法,我尝试(重新)编写的方法有什么问题? 基本上我想这样做: 问题答案: 原来有几个问题:

  • 枚举具有名为'hash value'的属性,该属性是枚举内的索引。

  • 问题内容: 这不是卡住我的问题,而是我正在寻找一种编写代码的整洁方法。 本质上,我正在编写一个事件驱动的应用程序。用户触发一个事件,该事件被发送到适当的对象,然后这些对象处理事件。现在,我正在编写偶数处理程序方法,并且希望使用switch语句确定如何处理事件。现在,在我研究通用结构时,事件类非常简单: 然后,在另一堂课中,我会看到类似以下内容的内容: 我会 喜欢 做的就是这样的事情(尽管我当然会坚

  • 问题内容: 在我的MySQL数据库中,有“ gender enum(’male’,’female’)”列 我创建了枚举“ com.mydomain.myapp.enums.Gender”,并在我的实体中定义了“性别”。 现在,我想将枚举类型保留在我的MySQL数据库中,但是当我启动应用程序时,我得到: 性别列在MyApp.Person中的列类型错误。找到:枚举,预期:整数 为什么是这样?这就像我用