我准备写一个方法,传入一个泛型类创建的对象。作为样本代码如下
void delete(TreeMap<? extends Integer , ?> t,int k,int v){
t.lowerKey(k);
}
我的想法是,传入的TreeMap对象的键是int的子对象,但是Eclipse报错
错误提示如下:
类型 TreeMap<capture#1-of ? extends Integer,capture#2-of ?> 中的方法 lowerKey(capture#1-of ? extends Integer)对于参数(int)不适用
刚学一点泛型,不大上手。不知道问题描述清楚了没有.........
------解决思路----------------------
Map的键值必须是Object类型,int类型是基本类型,TreeMap<Integer,?> 试试呢
------解决思路----------------------
class aa<S,T>{
void delete(TreeMap< S, T> t ,T v,S k){
t.lowerKey(k);
}
}
------解决思路----------------------
使用new TreeMap<? extends Integer, ?>();就无法创建对象,因为map的键要求是同一类型的,? extends Integer的意思为所有继承Integer的子类型,虽然Integer是final的不支持继承,假设可以继承的话,并存在两个子类型Integer1和Integer2,很显然她俩不是一个类型的,无法构建map。这样解释楼主明白否