Java 泛型是一种在编写代码时指定类型的机制,它提供了编译时类型检查和更强大的类型推断。通过使用泛型,可以编写更具通用性和安全性的代码。

基本概念:

泛型的基本思想是将类、接口、方法中的数据类型参数化,使得这些类、接口、方法可以操作不同类型的数据而不失去类型安全性。

泛型类:
public class Box<T> {
    private T value;

    public T getValue() {
        return value;
    }

    public void setValue(T value) {
        this.value = value;
    }
}

// 使用泛型类
Box<Integer> integerBox = new Box<>();
integerBox.setValue(42);

Box<String> stringBox = new Box<>();
stringBox.setValue("Hello, Generics!");

泛型方法:
public class GenericMethods {
    // 泛型方法
    public <T> void printArray(T[] array) {
        for (T element : array) {
            System.out.print(element + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        GenericMethods genericMethods = new GenericMethods();

        // 调用泛型方法
        Integer[] intArray = {1, 2, 3, 4, 5};
        String[] stringArray = {"apple", "banana", "orange"};

        genericMethods.printArray(intArray);
        genericMethods.printArray(stringArray);
    }
}

泛型通配符:
public class WildcardExample {
    // 泛型方法使用通配符
    public static void printList(List<?> list) {
        for (Object element : list) {
            System.out.print(element + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5);
        List<String> stringList = Arrays.asList("apple", "banana", "orange");

        // 调用泛型方法
        printList(integerList);
        printList(stringList);
    }
}

上下界通配符:
public class WildcardBounds {
    // 上界通配符
    public static double sumOfList(List<? extends Number> list) {
        double sum = 0.0;
        for (Number number : list) {
            sum += number.doubleValue();
        }
        return sum;
    }

    // 下界通配符
    public static void addIntegers(List<? super Integer> list) {
        list.add(42);
    }

    public static void main(String[] args) {
        List<Integer> integerList = Arrays.asList(1, 2, 3, 4, 5);
        List<Double> doubleList = Arrays.asList(1.1, 2.2, 3.3, 4.4, 5.5);

        // 上界通配符
        System.out.println("Sum of integers: " + sumOfList(integerList));
        System.out.println("Sum of doubles: " + sumOfList(doubleList));

        // 下界通配符
        List<Object> objectList = new ArrayList<>();
        addIntegers(objectList);
        System.out.println("List of integers: " + objectList);
    }
}

Java 泛型为编写类型安全且通用的代码提供了强大的工具。通过使用泛型,可以在编译时检测类型错误,提高了代码的可读性和可维护性。


转载请注明出处:http://www.zyzy.cn/article/detail/434/Java