自学内容网 自学内容网

Java Generic练习(2024.7.25)

        GenericExercise1

package GenericExercise20240725;

import java.util.ArrayList;
import java.util.List;

public class GenericExercise1 {
    public static void main(String[] args) {
        // 泛型是JDK5以后引入的新的特性,主要目的是为了提供编译时的类型安全检测机制
        // 使用泛型的好处-> 1.将运行时出现的问题提前到编译期间
        //                 2.避免了强制类型转换

        // 假如说没有泛型
        ArrayList list = new ArrayList();
        list.add("Hello");
        list.add(123);
        list.add(true);
        list.add(3.14);
        System.out.println(list); // 假如说没有泛型,所有类型的数据都可以存放到集合中,但是取出元素十分麻烦
        String element = (String)list.get(1); // 想要用get方法得到元素的话,必须强制类型转换,因为默认是Object类型的
        String element1 = (String)list.get(0); // 假如0索引正好是String类型的,那么此操作正确
        String element2 = (String)list.get(1); // 但1索引不是String类型的,编译也不会报错,只有运行之后才会报错
        // 就算不会出现类型错误的情况,但是也可以避免类型转换,节约时间


    }
}

        GenericExercise2

package GenericExercise20240725;
import java.util.Scanner;
public class GenericExercise2 {
    public static void main(String[] args) {
        // Java中可以用泛型方法来简化代码,因为泛型方法的参数可以接收多种数据类型,所以说很多类似的方法
        // 可以通过泛型方法来实现,从而简化代码
        Integer[] integerArray = {1, 2, 3, 4, 5};
        Double[] doubleArray = {1.1, 2.2, 3.14, 4.5, 5.4};
        String[] stringArray = {"abc", "acb", "cba", "cba", "bac"};
        // 有三个不同类型的数组,可以用一个泛型方法将其遍历打印
        printArray(integerArray); // 泛型方法的参数可以传递一切引用数据类型
        printArray(doubleArray);
        printArray(stringArray);
    }

    public static <E>void printArray(E[] array) {
        for (E e : array) {
            System.out.printf("%s ", e);
        }
        System.out.println();
    }

    // 泛型方法可以传递一切引用数据类型的原理:类型擦除
    /*在Java中,泛型是在编译时处理的,编译器会在编译过程中移除所有的泛型类型信息,这个过程称为类型擦除。
    类型擦除的结果是,所有的泛型类型参数都会被替换为它们的上界(如果没有指定上界,则替换为Object)所以
    不管传递的是什么对象类型,编译之后都是一样的类型*/
}

 


原文地址:https://blog.csdn.net/Aishangyuwen/article/details/140696798

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!