MST
星途 面试题库

面试题:Java泛型在API设计中如何提高代码的重用性

请举例说明在设计一个通用的集合操作API时,Java泛型是怎样提高代码重用性的,比如设计一个可以对不同类型集合进行排序的方法,阐述泛型在此过程中的作用及实现方式。
36.5万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
  1. 泛型在提高代码重用性方面的作用
    • 在设计通用的集合操作API时,Java泛型允许我们编写一次代码,就可以应用于多种不同类型的集合,而无需为每种类型的集合单独编写方法。这大大提高了代码的重用性,减少了重复代码。例如,对于排序方法,如果没有泛型,我们可能需要为List<Integer>List<String>等不同类型的列表分别编写排序方法。但使用泛型后,一个方法就可以处理多种类型的列表。
  2. 实现对不同类型集合进行排序的方法(以List为例)
    • 以下是使用Java泛型实现对不同类型List进行排序的代码示例:
import java.util.Collections;
import java.util.List;

public class GenericSortExample {
    public static <T extends Comparable<T>> void sortList(List<T> list) {
        Collections.sort(list);
    }
}
  • 代码解释
    • <T extends Comparable<T>>是泛型类型声明部分。这里定义了一个类型参数T,并且要求T类型必须实现Comparable<T>接口。这是因为Collections.sort方法要求列表中的元素必须是可比较的,这样才能进行排序。
    • sortList方法接受一个List<T>类型的参数,这样无论TIntegerString还是其他实现了Comparable接口的类型,都可以传入这个方法进行排序。
  • 使用示例
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> intList = new ArrayList<>();
        intList.add(3);
        intList.add(1);
        intList.add(2);
        GenericSortExample.sortList(intList);
        System.out.println(intList);

        List<String> stringList = new ArrayList<>();
        stringList.add("banana");
        stringList.add("apple");
        stringList.add("cherry");
        GenericSortExample.sortList(stringList);
        System.out.println(stringList);
    }
}
  • 在上述main方法中,分别创建了Integer类型和String类型的List,并调用sortList方法进行排序。这展示了通过泛型,一个排序方法可以应用于不同类型的List,提高了代码的重用性。