You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用泛型合并Entity与EntityDTO的getId相关方法?

用泛型合并相似方法的实现方案

1. 定义通用接口

先创建一个接口来统一getId()方法的契约,让所有需要获取ID的类都实现它:

public interface Identifiable {
    Integer getId();
}

2. 修改现有类实现接口

让Entity和EntityDTO都实现上面的Identifiable接口:

public class Entity implements Identifiable {
    private Integer id;

    @Override
    public Integer getId() {
        return id;
    }
}

public class EntityDTO implements Identifiable {
    private Integer id;

    @Override
    public Integer getId() {
        return id;
    }
}

3. 实现泛型统一方法

在EntityProcessing类里替换原来的两个方法为一个泛型方法,通过泛型约束确保参数是实现了Identifiable的类型:

public class EntityProcessing {
    // 泛型约束T必须是Identifiable的实现类
    public <T extends Identifiable> Integer getId(T obj) {
        return obj.getId();
    }
}

调用示例

现在不管传入Entity还是EntityDTO,都能通过同一个方法获取ID:

public class Demo {
    public static void main(String[] args) {
        EntityProcessing processor = new EntityProcessing();
        
        Entity entity = new Entity();
        EntityDTO dto = new EntityDTO();
        
        Integer entityId = processor.getId(entity);
        Integer dtoId = processor.getId(dto);
    }
}

核心逻辑说明

  • 接口Identifiable统一了所有带ID的类的行为,消除了Entity和EntityDTO之间的类型差异
  • 泛型<T extends Identifiable>既保证了方法只能接收合法类型(类型安全),又实现了代码复用,不用再写重复的方法

内容的提问来源于stack exchange,提问作者Alex A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 00:25:59