Java 中泛型的基本使用

发布时间:2024年01月16日

目录

一、泛型类的使用

二、泛型接口的使用

三、泛型方法的使用

相关测试


一、泛型类的使用

/* 泛型类,T 表示 Java 中的任意类型,
   也就是说构造方法中 data 属性可以传递任意类型的值*/
class ResultData<T>{
    Integer code;
    String msg;
    T data;

    public ResultData(Integer code,String msg,T data){
        this.code=code;
        this.msg=msg;
        this.data=data;
    }
}

二、泛型接口的使用

// 泛型接口
interface MyInterface<T>{
    public void test(T t);
}

三、泛型方法的使用

// 泛型方法的定义方式,必须在返回值类型之前加上 <T> 泛型类型,才能在方法中使用泛型类
    public static <T> T toObject(String json,Class<T> tClass) throws JsonProcessingException {
        ObjectMapper mapper=new ObjectMapper();
        T t = mapper.readValue(json, tClass);
        return t;
    }

    // ? 表示任意类型
    public static void test1(List<?> list){
        for (Object o : list) {
            System.out.println(o);
        }
    }

    /**
     * 上下边界
     *   上边界:? extends 类名,此时的 ? 必须是此类的子类或类本身
     *   下边界:? super 类名,此时的 ? 必须是此类的父类或类本身
     */
    public static <T> void test2(List<? extends Comparable<T>> list){

    }
    public static void test3(List<? super Number> list){

    }

相关测试

        List<String> stringList=new ArrayList<>();
        List<Object> objectList=new ArrayList<>();
        List<Number> numberList=new ArrayList<>();
        List<Integer> integerList=new ArrayList<>();
        // test1 方法均可调用
        test1(stringList);
        test1(objectList);
        test1(numberList);
        test2(integerList);

        test2(stringList);
        test2(integerList);
        test2(objectList); // 报错,传入的类型必须是Comparable的实现类或 Comparable本类
        test2(numberList); // 报错,传入的类型必须是Comparable的实现类或 Comparable本类

        test3(objectList);
        test3(numberList);
        test3(integerList); // 报错,传入的类型必须是Number的父类或 Number本类

文章来源:https://blog.csdn.net/qq_58417838/article/details/135630600
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。