首页 > 其他分享 >泛型 ? extends E ? super E的区别

泛型 ? extends E ? super E的区别

时间:2022-12-20 09:44:31浏览次数:37  
标签:ArrayList Collection extends Animal 泛型 new super class

package cn.itcast.generic;

import java.util.ArrayList;
import java.util.Collection;

public class SupperGenericDemo {

public static void main(String[] args) {
// 泛型如果明确写的时候,前后必须一致 ,c2,c3,c4会报错
Collection<Object> c1 = new ArrayList<Object>();
// Collection<Object> c2 = new ArrayList<Animal>();
// Collection<Object> c3 = new ArrayList<Cat>();
// Collection<Object> c4 = new ArrayList<Dog>();

// ?表示任意的类型都是可以的
Collection<?> c5 = new ArrayList<Object>();
Collection<?> c6 = new ArrayList<Animal>();
Collection<?> c7 = new ArrayList<Cat>();
Collection<?> c8 = new ArrayList<Dog>();

// ? extends E: 向下限定,E及其子类
// Collection<? extends Animal> c9 = new ArrayList<Object>();
Collection<? extends Animal> c10 = new ArrayList<Animal>();
Collection<? extends Animal> c11 = new ArrayList<Cat>();
Collection<? extends Animal> c12 = new ArrayList<Dog>();


// ? super E: 向上限定,E及其父类
Collection<? super Cat> c13 = new ArrayList<Object>();
Collection<? super Cat> c14 = new ArrayList<Animal>();
Collection<? super Cat> c15 = new ArrayList<Cat>();
// Collection<? super Cat> c16 = new ArrayList<Dog>();

}

}

class Animal{
}

class Cat extends Animal{
}

class Dog extends Animal{
}

标签:ArrayList,Collection,extends,Animal,泛型,new,super,class
From: https://www.cnblogs.com/luorongxin/p/16993572.html

相关文章

  • Java笔记(5)——类的继承、访问控制、super关键字
      在类中,不写构造方法,相当于执行了默认的无参构造方法;写了有参构造方法,则只执行有参构造方法,默认的无参构造方法则会被屏蔽掉;若想拥有有参和无参构造方法,则同时显示地写出......
  • 泛型
    总是优先考虑使用泛型:避免在泛型类型中声明静态成员 staticvoidMain(string[]args){MyListmylist01=newMyList();MyList......
  • TS泛型
    有人疑惑:为什么使用泛型呢,使用any不好吗?从使用方面来讲,any是可以运行的!但是遇到如下的情况就必须使用泛型:教务系统中对学校人员进行年审一个function,既需要处理student类,t......
  • delphi D11编程语言手册 学习笔记(P424-477) 泛型
      这本书可以在Delphi研习社②群256456744的群文件里找到.书名:Delphi11AlexandriaEdition.pdf 泛型在C++中叫做类型模板(templateclasses),单从字面上理......
  • 泛型和数据结构
    1定义:广泛的数据类型,用T或E表示只能是引用类型(基本类型数据用其包装类)2优势:(1)将运行时期的问题提前到编译器(2)避免强制类型转换(3)提高了程序的执行效率3使用一......
  • 09.泛型、trait与生命周期
    一、删减重复代码fnmain(){letnumber_list=vec![34,50,25,100,65];letmutlargest=number_list[0];fornumberinnumber_list{......
  • Presenting action sheet clipped by its superview
    Presentingactionsheetclippedbyitssuperview.Somecontrolsmightnotrespondtotouches.OniPhonetry-[UIActionSheetshowFromTabBar:]or-[UIActionSheetshowF......
  • 【五期杨志】CCF-A(NeurIPS’21) VATT: Transformers for Multimodal Self-Supervised
    Akbari,Hassan,etal."Vatt:Transformersformultimodalself-supervisedlearningfromrawvideo,audioandtext."AdvancesinNeuralInformationProcessing......
  • Supervisor 进程管理
    ##一、简介supervisor是一个Python开发的、通用的进程管理程序。当程序中断时,supervisor能自动重启它,不再需要程序员或系统管理员自己编写代码来控制。**supervisor要求......
  • Python super() 详解 最简单的解释
    首先提一下,经典类和新式类。在Python2中,如果定义类的方式是classMyClass:那么该类叫做经典类,如果定义类的方式为classMyClass(object):那么该类为新式类。在Python3中......