SCJP6.0认证:泛型练习题201-244解析

需积分: 15 0 下载量 87 浏览量 更新于2024-10-11 收藏 203KB PDF 举报
本资源是一份针对Sun Certified Java Programmer 6.0 (SCJP 6.0)认证考试的题库,包含244道题目,其中部分题目涉及了Java编程语言的基础概念和泛型(Generics)的使用。题目201和202是关于泛型的典型例子,旨在考察考生对类型擦除(Type Erasure)的理解以及在方法调用中的类型参数化。 题目201要求考生分析在给定代码中插入不同类型的List对象到方法调用时的行为。这里有三个List对象,一个是List<A>(存储A类的实例),一个是List<B>(B类继承自A),另一个是List<Object>(可以存储任何类型的对象)。方法m1期望接收一个泛型参数<? extends A>,这意味着它可以接受任何扩展A类的对象列表;而方法m2期望一个具体类型的List<A>。根据Java的类型系统规则: - m1(listA):编译通过且运行无误,因为List<A>是A类及其子类的集合,符合m1的要求。 - m1(listB):编译通过且运行无误,同理,List<B>也是A的子类。 - m1(listO):不编译,因为Object类型的List不能直接传递给需要A或其子类的参数。 - m2(listA):编译通过且运行无误,与m1类似,方法明确指定A类型。 - m2(listB):不编译,因为虽然B继承自A,但泛型参数要求的是List<A>,不是List<B>。 - m2(listO):不编译,同理,Object类型的List无法满足List<A>的类型要求。 题目202展示了如何使用泛型来创建一个关联数组(Map)NumberNames,存储字符串和数字映射关系。代码创建了一个NumberNames对象并添加键值对。然后尝试获取所有名称,这里没有涉及到泛型的具体操作,但展示了Map接口在实际编程中的应用。 这两道题目不仅测试了候选人的Java语法知识,还考察了他们对于面向对象编程、继承、类型安全以及泛型高级特性的理解。通过解决这些题目,考生能够提升自己在SCJP 6.0考试中的准备水平。在学习过程中,建议结合官方文档和深入理解Java编程规范来解答这类问题。