gpt4 book ai didi

java - 泛型类型转换?

转载 作者:行者123 更新时间:2023-11-30 09:28:51 27 4
gpt4 key购买 nike

在抽象工厂模式中,我使用的是泛型。我有扩展 Serializable 的 BaseEntity 接口(interface),Employee 类实现 BaseEntity。在抽象类中我有这个 getJavaObj 方法

getJavaObj()是一种采用 Long empId 的方法并返回 Map<String, ? extends BaseEntity>

public abstract Map<String, ? extends BaseEntity> getJavaObj(Long id);

我试图在它提供的主类中使用泛型;

Map<String, Employee> emp = getJavaObj(empId);

它给出了这个错误 Type safety: Unchecked cast from Map<String,capture#1-of ? extends BaseEntity>到 map

当我像这样进行类型转换时

Map<String, Employee> emp = (Map<String, Employee>)getJavaObj(empId);

它给出了这个警告

Type safety: Unchecked cast from Map<String,capture#1-of ? extends Serializable> to Map Type safety: Unchecked cast from Map<String,capture#1-of ? extends BaseEntity> to Map

有没有办法避免类型转换或在类型转换后解决警告?因为我返回的对象确实通过 BaseEntity 接口(interface)扩展到 Serializable。

最佳答案

重新定义你的工厂方法:

public abstract <T extends BaseEntity> Map<String, T> getJavaObj(Long id);

然后你可以在没有转换的情况下得到正确的类型:

Map<String, Employee> emp = getJavaObj(empId);

关于java - 泛型类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13813847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com