Java应用6(泛型)

Java 泛型是 JDK 5 引入的一项特性,它允许在类、接口和方法中使用类型参数,从而实现代码的复用和类型安全。下面从几个方面为你详细介绍 Java 泛型:

泛型类

泛型类是指在定义类时使用类型参数。以下是一个简单的泛型类示例:

java

class Box {
    private T content;

    public Box(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }

    public void setContent(T content) {
        this.content = content;
    }
}

在这个示例中,Box 类是一个泛型类,T 是类型参数。在创建 Box 对象时,可以指定具体的类型。例如:

java

Box integerBox = new Box<>(10);
Box stringBox = new Box<>("Hello");

泛型接口

泛型接口与泛型类类似,在定义接口时使用类型参数。示例如下:

java

interface Pair {
    K getKey();
    V getValue();
}

class OrderedPair implements Pair {
    private K key;
    private V value;

    public OrderedPair(K key, V value) {
        this.key = key;
        this.value = value;
    }

    @Override
    public K getKey() {
        return key;
    }

    @Override
    public V getValue() {
        return value;
    }
}

可以这样使用:

java

Pair pair = new OrderedPair<>("One", 1);

泛型方法

泛型方法是指在方法定义中使用类型参数。示例如下:

java

class GenericMethodExample {
    public static  T getFirst(T[] array) {
        if (array != null && array.length > 0) {
            return array[0];
        }
        return null;
    }
}

调用泛型方法:

java

Integer[] intArray = {1, 2, 3};
Integer firstInt = GenericMethodExample.getFirst(intArray);

String[] stringArray = {"Hello", "World"};
String firstString = GenericMethodExample.getFirst(stringArray);

类型通配符

类型通配符用于在使用泛型时表示未知类型。主要有三种形式:

  • ?:无界通配符,表示未知类型。

java

public static void printList(List list) {
    for (Object element : list) {
        System.out.print(element + " ");
    }
    System.out.println();
}
  • ? extends T:上界通配符,表示类型必须是 T 或 T 的子类。

java

public static double sumOfList(List list) {
    double sum = 0.0;
    for (Number n : list) {
        sum += n.doubleValue();
    }
    return sum;
}
  • ? super T:下界通配符,表示类型必须是 T 或 T 的父类。

java

public static void addNumbers(List list) {
    for (int i = 1; i <= 10; i++) {
        list.add(i);
    }
}

泛型的好处

  • 类型安全:在编译时就能发现类型错误,避免在运行时出现 ClassCastException
  • 代码复用:可以编写通用的代码,适用于不同的类型。
  • 可读性增强:明确了代码所处理的数据类型。Java应用6(泛型)_第1张图片

你可能感兴趣的:(windows,开发语言)