知识卡片
泛型符号E与Object父类的本质区别
内容
java.util.Iterator接口的next()返回类型是泛型符号E而非Object。E代表某种类型,由实现类 声明时决定,在编译期就固定类型约束;Object是所有类的真实父类,天然通用但需要向下转型 才能调用专属方法,把类型判断推迟到运行期。发散:这是理解Java泛型价值的切入点——保留 通用容器灵活性的同时把类型安全检查提前到编译期。
参考来源
- 位置:《设计模式之禅(第2版)》第20章《迭代器模式》(源文件:_epub-src/text/part0090.html)
- 结论依据:原文专门解释java.util.iterator接口next()方法的泛型返回值E与ConcreteIterator实际返回IProject之间的关系,说明"E是JDK 1.5中定义的新类型:元素(Element),是一个泛型符号……它与Object这个类可是不同的,Object是所有类的父类……而E是一个符号,代表所有的类"。
- 原始内容:E是JDK 1.5中定义的新类型:元素(Element),是一个泛型符号,表示一个类型,具体什么类型是在实现或运行时决定……它与Object这个类可是不同的,Object是所有类的父类,随便一个类你都可以把它向上转型到Object类……而E是一个符号,代表所有的类,当然也代表Object了。