栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否可以将两个通配符类型声明为相同类型?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否可以将两个通配符类型声明为相同类型?

作为替代方案,您可以使用少量的非类型安全代码以强制执行约束的方式封装:

class Cache {    private Map<Class<?>, Map<Long, ?>> items = new HashMap<Class<?>, Map<Long, ?>>();    private <T> Map<Long, T> getItems(Class<T> type) {        @SuppressWarnings("unchecked")        Map<Long, T> result = (Map<Long, T>) items.get(type);        if (result == null) { result = new HashMap<Long, T>(); items.put(type, result);        }        return (Map<Long, T>) result;    }    public <T> void addItem(Class<T> type, Long id, T item) {        getItems(type).put(id, item);    }    public <T> T getItem(Class<T> type, Long id) {        return type.cast(getItems(type).get(id));    }}

type.cast()
getItem()
不需要编译器不会抱怨,但它会帮助赶上了错误的类型进入缓存早期的对象。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515464.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号