我有以下代码段:
Set<Short> map=new HashSet<>();
short i=1;
map.add(i);
map.remove(i-1)
它忽略了删除,因为I-1被自动转换为整数。但是,为什么没有删除(V)方法与泛型?这很糟糕,我应该看到一个例外,或者这个方法应该是通用的。没有任何意义。为什么这样设计?
问题是:
如果我们有Set,为什么我们不在其中删除方法(E e)?我发现它是因为内部有一个Object数组。但为什么?如果我们有一套E类通用类型,为什么我们不将E []作为内部存储?对我来说,这绝对没有意义。
例如我期望:
class Set<E>{
private E[] values;
public void add(E e);
public void remove(E e);
}
但我得到了:
class Set<E>{
private Object[] values;
public void add(E e);
public void remove(Object e);
}
为什么不这样做?
class Set<E>{
private E[] values;
public void add(E e);
public void remove(E e){
for(E v:values){
if(v.equals(e)){
//remove element
}
}
}
}
????