全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页

JAVA泛型详解专题测试

20 题 60 分钟 难度:

考察知识点

知识点模块题目数量题目编号
泛型类基础3道Q001-Q003
泛型接口实现2道Q005-Q006
泛型方法定义与调用4道Q007,Q010-Q012
类型通配符PECS原则3道Q013-Q014,Q017
类型擦除机制3道Q019-Q020,Q024
泛型与继承关系3道Q025,Q028-Q029
泛型与反射1道Q032
泛型最佳实践1道Q048
1
单选题

关于泛型类的定义,以下哪个是正确的语法?

A

public class Box { private T value; }

B

public class Box<T, V> { private T value; }

C

public class Box { private type value; }

D

public class Box { private T value; }

2
判断题

泛型类在实例化时必须指定具体的类型参数,如new Box()。

A

B

3
填空题

Java泛型类常用的类型参数命名约定:______表示任意类型,______表示集合元素类型,______表示键类型,______表示值类型,______表示数值类型。

4
判断题

一个类实现泛型接口时,既可以指定具体类型,也可以保留泛型参数成为泛型类。

A

B

5
单选题

Java标准库中的Comparable接口,以下哪种实现方式是正确的?

A

class Person implements Comparable { public int compareTo(Object o) {...} }

B

class Person implements Comparable { public int compareTo(Person o) {...} }

C

class Person implements Comparable<Person> { public int compareTo(Person o) {...} }

D

以上都可以

6
单选题

关于泛型方法,以下说法正确的是:

A

泛型方法只能定义在泛型类中

B

泛型方法的类型参数声明必须在返回值类型之前

C

泛型方法的类型参数与泛型类的类型参数是同一个

D

泛型方法不能使用静态修饰符

7
单选题

以下代码的执行结果是什么?

Java
public static <T> T first(List<T> list) {
    return list.get(0);
}
List<String> strings = Arrays.asList("a", "b", "c");
String result = first(strings);
A

编译错误,需要显式指定类型参数

B

编译成功,编译器推断T为String

C

编译成功,返回Object类型需要强转

D

运行时抛出ClassCastException

8
判断题

泛型类中的静态方法可以使用类的类型参数,因为静态方法属于类。

A

B

9
填空题

泛型方法的类型参数声明必须在__________之前,语法格式为:________________________

10
单选题

PECS原则的含义是什么?

A

Producer Extends Consumer Super - 生产者用extends,消费者用super

B

Producer Super Consumer Extends - 生产者用super,消费者用extends

C

Private Extends Public Super - 私有继承公有

D

Parameter Extends Class Super - 参数继承类

11
多选题

关于泛型通配符的限制,以下说法正确的有哪些?

A
B
C
D
12
简答题

请简述<? extends T>和<? super T>的区别及各自的适用场景。

13
单选题

Java泛型的类型擦除机制是什么?

A

编译时擦除类型参数,运行时保留泛型信息

B

编译时擦除类型参数,运行时泛型信息被替换为边界类型或Object

C

运行时擦除类型参数,编译时保留泛型信息

D

泛型信息不会被擦除,一直保留到运行时

14
多选题

由于类型擦除,以下哪些情况会导致问题或限制?

A

无法创建泛型数组,如new List[10]

B

无法使用instanceof检查泛型类型,如obj instanceof List

C

无法创建类型参数的实例,如new T()

D

方法重载时,不同泛型参数的方法签名相同

15
判断题

由于类型擦除,在运行时完全无法获取任何泛型类型信息。

A

B

16
单选题

以下哪个赋值语句是正确的?

A

List list = new ArrayList();

B

List list = new ArrayList();

C

List list = new ArrayList();

D

Object[] array = new String[10]; // 这行正确,但List list = new ArrayList()不正确

17
单选题

泛型类本身可以继承其他类吗?

A

泛型类不能继承其他类

B

泛型类可以继承普通类或泛型类

C

泛型类只能继承泛型类

D

泛型类只能继承普通类

18
判断题

类型参数可以继承其他类或实现接口,如表示T必须是Number或其子类。

A

B

19
多选题

关于Java反射中的Type体系,以下说法正确的有哪些?

A

Type是所有类型的公共父接口

B

ParameterizedType表示参数化类型,如List

C

TypeVariable表示类型变量,如泛型参数T

D

WildcardType表示通配符类型,如?、? extends Number

20
判断题

使用有界类型参数(Bounded Type Parameter)如可以限制类型参数范围,并提供更多可用方法。

A

B

← 上一个试卷 JAVA数组与方法专题测试
下一个试卷 → JAVA线程安全与同步机制专题测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库