java开发手册编码规范集合第12条解释:泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用add方法,而<? super T>不能使用get方法, 两者在接口调用赋值的场

本文介绍了Java开发手册中的泛型通配符使用规范,特别是<? extends T>和<? super T>的区别。前者适用于读取操作,后者适用于插入操作。遵循PECS原则可以避免在接口调用和赋值时出现错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一定要看代码部分
java开发手册
一、编程规范
(六)集合处理
12. 【强制】泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用add方法,而<? super T>不能使用get方法,
两者在接口调用赋值的场景中容易出错。 说明:扩展说一下PECS(Producer Extends Consumer Super)原则:
第一、频繁往外读取内容的,适合用<? extends T>。第二、经常往里插入的,适合用<? super T>

原文

  1. 【强制泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用add方法,而<? super
    T>不能使用get方法,两者在接口调用赋值的场景中容易出错。 说明:扩展说一下PECS(Producer Extends Consumer
    Super)原则:第一、频繁往外读取内容的,适合用<? extends T>。第二、经常往里插入的,适合用<? super T>
    在这里插入图片描述
package com.wsq.io.nio;

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

/**
 * java开发手册
 *      一、编程规范
 *          (六)集合处理
 *             12. 【强制】泛型通配符<? extends T>来接收返回的数据,此写法的泛型集合不能使用add方法,而<? super T>不能使用get方法,
 *             两者在接口调用赋值的场景中容易出错。 说明:扩展说一下PECS(Producer Extends Consumer Super)原则:
 *             第一、频繁往外读取内容的,适合用<? extends T>。第二、经常往里插入的,适合用<? super T>
 *
 * @author midouwan
 * @date 2021-01-18 9:17 上午
 */
public class Test {
   
   

    public static void main(String[] args) {
   
   

        //最小子类
        Student student = new Student();

        // 多态体现
        List<Animal> animals = new ArrayList<>();
        animals.add(student);

        List<Person> person = new ArrayList<><