首页 > 编程语言 >java泛型'T'与'?'基本知识

java泛型'T'与'?'基本知识

时间:2023-05-08 13:12:09浏览次数:42  
标签:java list1 List 基本知识 list add Student 泛型 new

从事了几年的开发工作,一直都是在有道云或者百度网盘上记录日常工作中的一些问题和经验,难以分享知识。这是第一次发博客随笔,以便后期与喜欢技术的大家一起进步;

结论:'T'指的是某一类具体的对象,'?'可以表示成占位符,表明多种数据类型;

示例:可以看到show1方法中我们使用了T,大家都知道这是泛型的常见写法,那么这里的T指的是某一类具体的对象,list集合里只能存放同一类型数据,如果插入不同类型数据则会报错。
那么show2方法中我们使用的是?,可以看到在void前面并没有<T>,?可以表示成占位符,它自己也不知道list集合中会存放多少种类型的数据,所以这样就表明我们的list中存放N种数据类型也是可以的。
我们通过一段测试代码来直观的感受一下二者的区别吧:
public static <T> void show1(List<T> list){
 for (Object object : list) {
        System.out.println(object.toString());
    }
}
public static void show2(List<?> list) {
    for (Object object : list) {
        System.out.println(object);
    }
}
public static void test(){
   List<Student> list1 = new ArrayList<>();
   list1.add(new Student("zhangsan",18,0));
   list1.add(new Student("lisi",28,0));
   list1.add(new Student("wangwu",24,1));
   //这里如果add(new Teacher(...));就会报错,因为我们已经给List指定了数据类型为Student
   show1(list1);
   System.out.println("************分割线**************");
   //这里我们并没有给List指定具体的数据类型,可以存放多种类型数据
   List list2 = new ArrayList<>();
   list2.add(new Student("zhaoliu",22,1));
   list2.add(new Teacher("sunba",30,0));
   show2(list2);
}

标签:java,list1,List,基本知识,list,add,Student,泛型,new
From: https://www.cnblogs.com/sunyonggao/p/17381409.html

相关文章

  • Java泛型
    泛型使用泛型的本质是参数化类型1、List<T>{}publicclassHashSet<E>{}T和E必须是引用类型不能是基本类型2、使用List<Integer>list=newArrayList<Integer>();//后面可以直接缺省java编译器会帮我们自动推断List<Integer>list=newArrayList<>();3、如果不写......
  • Java 几种任务调度的实现方法与比较
    几种任务调度的Java实现方法与比较综观目前的Web应用,多数应用都具备任务调度的功能。本文由浅入深介绍了几种任务调度的Java实现方法,包括Timer,Scheduler,Quartz以及JCronTab,并对其优缺点进行比较,目的在于给需要开发任务调度的程序员提供有价值的参考。 任务调度是指......
  • java链表的疑惑
    head.next=tail; tail=newListNode();为什么head.next不等于tail在cpp里面head->next=tail;tail=newListNode();这时head->next==tail.这是因为head->next存放的是tail的地址,而java中head.next=tail; tail=newListNode();head.next存放的是tail的之前......
  • java: 错误: 无效的源发行版:17
    最近想在本地新建maven项目写写demo的,但是运行时提示java:错误:无效的源发行版:17错误。在这里记录一下,方便后面查看。1、修改IDEA设置JDK版本File-->Settings-->Build,Execution,Deployment-->Compiler-->JavaCompilerProjectStructure查看这两个设置......
  • 【JavasSript】后台返回 csv base64 下载
    constexort=async()=>{try{const{data}=awaitzhjxDownloadFile({meta:{user_token:localStorage.getItem('user_token'),file_name:activeName.value,image_indexs:activePage.value,},......
  • 《java接力》springboot篇——注解
    注解后续补充常用注解aspect参考链接:https://zhuanlan.zhihu.com/p/351468451需要依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>......
  • java.io.FileNotFoundException: class path resource [bean.xml] cannot be opened b
    出现这个报错Exceptioninthread"main"org.springframework.beans.factory.BeanDefinitionStoreException:IOExceptionparsingXMLdocumentfromclasspathresource[bean.xml];nestedexceptionisjava.io.FileNotFoundException:classpathresource[bean.......
  • Python 和 JavaScript 的区别是什么?
    Python和JavaScript是两门非常流行的编程语言,它们各自有着独特的特点和应用场景。Python和JavaScript是两种不同的编程语言,它们的设计目标和应用场景有所不同。Python是一种多用途、高级、解释型的编程语言,可用于开发各种应用程序,包括Web开发、数据分析、人工智能、科学计算......
  • JavaScript原生兼容大全-持续更新
    JavaScript兼容-持续更新1.css非行内样式操作//currentStyle用于IE低版本getComputed用于主流浏览器//element目标元素attribute目标属性functiongetStyle(element,attribute){returnelement.currentStyle?element.currentStyle(attribute):getComputed(el......
  • Java反射--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本
    >Java反射--2021面试题系列教程(附答案解析)--大白话解读--JavaPub版本前言序言再高大上的框架,也需要扎实的基础才能玩转,高频面试问题更是基础中的高频实战要点。适合阅读人群Java学习者和爱好者,有一定工作经验的技术人,准面试官等。阅读建议本教程是系列教程,包含Java基础,JVM,容器,......