如何利用泛型合并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
相关产品推荐
相关产品推荐

