如何使用泛型将 DynamoDB Bean 注释应用于不同项目的 POJO?

问题描述

我正在尝试在我的应用程序中设置一个微框架以删除重复的代码(“DRY”原则)。具体来说,我需要将项目中的注释与不同项目中的几个 POJO 类(这些是下面的 <T> 类)结合使用,这些类不共享我的依赖项。

所以我从这个开始:

public abstract class DynamoRepo<T> {

    @DynamoDbBean
    public static class Entity<T> {
        private Number id;
        private T bean;
    
        @DynamoDbPartitionKey
        @DynamoDbConvertedBy(IdConverter.class)
        public Number getId() {
            return id;
        }
    
        public void setId(Number id) {
            this.id = id;
        }
    
        @DynamoDbFlatten
        public T getBean() {
            return bean;
        }
    
        public void setBean(T bean) {
            this.bean = bean;
        }
        
        ...

...下面的代码在运行时需要注解

    private DynamoDbTable<Entity<?>> table;

...在构造函数中进行一些设置...

    table = enhancedClient.table(tableName,TableSchema.fromBean(new Entity<? extends T>() {}.getClass()));

...我希望能够接受一个<T>,它不需要调用者知道Entity

public void putItem(T item) {
    table.putItem(new Entity<T>(item));
}

唉,这段代码无法编译。这里有几个问题,任何小的调整都会导致不同的编译错误

我如何才能在不向底层 POJO(不在我的项目中并且没有 DynamoDB 作为依赖项)添加 @DynamoDb 注释或必须手动创建扩展每个的子类的情况下完成这项工作POJO(并通过创建整个并行对象层次结构将 DRY 抛出窗口)?

这个问题是关于代码清晰度的。请不要担心性能开销。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)