泛型的疑惑。。
结贴是美德 2012-01-18 01:02:19 我在看泛型方面的东西时,遇到这样一种说法:
如果类型a与类型b有继承关系,那么a[]与b[]也有继承关系。但是泛型就没有这个特点,并举例说道:
如果类型a与类型b有继承关系,那么List<a>与List<b>一毛钱关系都没有。
而且假设关系成立,那么程序将出现很多错误:
List<Integer> li = new ArrayList<Integer>();
List<Number> ln = li; // illegal
ln.add(new Float(3.1415));
这将导致li中放入Float对象。我觉得很有道理。。但是呢,问题来了,java允许这么做:
List<Integer> li = new ArrayList<Integer>();
List lo = li;
这个不带类型参数的List将会被擦除到类型参数的上限,就是Object,那我接下来这么做
List<Integer> li = new ArrayList<Integer>();
List lo = li;
lo.add(new Float(100f);
这不就和开头的情况一样了么??
各位大侠 这Java语言设计得让我非常困惑。。。。