首页 > 编程语言 >java中泛型通配符的读取、写入问题

java中泛型通配符的读取、写入问题

时间:2024-11-21 19:42:55浏览次数:3  
标签:java 读取 写入 ArrayList 通配符 子类 返回值 中泛

        通配符是泛型中非常重要的一个概念,它的作用是标明某些属性的类型是不确定的,比如说ArrayList<?>表示你可以给它赋值为ArrayList<String>,或者是ArrayList<Long>。提高了代码的复用性。但是当我们使用<? extends A>或是<? super A>的时候,读取与写入是与平常的ArrayList<String>不一样的。

        首先,无论是哪种通配符都是可以读取的,只是返回值的类型不同。<? extends A>的返回值类型是A类,但是写入是不被允许的。而<? super A>的返回值是Object类,写入时只能写入A类的子类。这是因为由于多态性,子类是可以强转成父类的。但是<? extends A>表示该属性只能是A类的子类,而你给他添加元素的时候可能会添加一个?的子类,这样就不能被强转。而<? super A>表示?只能为A类的父类,这样无论你怎么小,只要是?的子类,就都能够被强转为?,从而正常赋值。

标签:java,读取,写入,ArrayList,通配符,子类,返回值,中泛
From: https://blog.csdn.net/2401_88005599/article/details/143953288

相关文章

  • 【C++学习笔记】一个先学了Java,Python,Csharp最后再来学C++的菜狗笔记
    1.字符串1.char数组charstr[]="helloworld";可以使用cstring库中的函数(如strlen,strcpy)。2.string类型#include<string>stringstr="helloworld";与csharp,java等语言不同的是动态分配内存,由标准库管理。支持操作符重载(如+,==等)。std::string是可变的,类似......
  • JAVA 静态代理 & 动态代理
    Java中,代理模式是一种常见的设计模式,用于为某对象提供一种代理,以控制对该对象的访问。根据代理类的实现方式,可以分为静态代理和动态代理。以下将分别介绍这两种方式,并进行对比分析。静态代理静态代理是指在编译时期就已经确定了代理类的实现。代理类需要实现与目标对象相同的接......
  • 【BitMap】 java中实现BitMap位图 byte数组实现的bitmap位图
      转载自: https://blog.csdn.net/heshiyuan1406146854/article/details/122687988 /***byte数组实现的bitmap**@authorSXD*@date2024/11/21*/publicclassMyBitmap{privatebyte[]buckets;publicMyBitmap(intmaxNum){this.ini......
  • java中的异常,异常处理
    什么是异常?异常是程序运行过程中所遇到的错误或者不正常的情况,可能会导致程序终止或者出错。在Java中所有的异常都继承自一个throwable的类,它有error和exception两个子类,而且分为编译错误和运行时错误。为什么需要异常处理?出现异常后,导致程序后的代码都无法执行。从而造成......
  • 点餐管理系统设计与实现(Java+SpringBoot+MySql)
              目录第1章 绪论1.1选题动因1.2目的和意义1.3论文结构安排第2章 开发环境与技术2.1MySQL数据库2.2 Tomcat介绍2.3 vue技术2.4 SpringBoot框架第3章 系统分析3.1可行性分析3.1.1操作可行性分析3.1.2经济可行性分析......
  • 【Flinkcdc问题解决】java.lang.NoClassDefFoundError: org/apache/flink/shaded/guav
    1.环境介绍Flink1.17+Flinkcdc2.2.12.问题描述使用Flink1.17和Flinkcdc2.2.1环境进行数据加工,但是报以上错误,原因是版本不匹配,flinkcdc2.2.1用的是guava18,但是flink1.17用的是guava30,导致冲突。3.问题解决添加flink-sql-connector-mysql-cdc依赖<dependen......
  • JavaScript网页设计案例:动态交互与用户体验提升
        随着前端开发技术的不断发展,JavaScript已经成为现代网页设计中不可或缺的工具。通过JavaScript,开发者可以为用户提供更为流畅、动态的交互体验,让网页不仅具备美观的视觉效果,更能提高用户的参与感和功能实用性。    本文将通过一个实际案例展示如何使用JavaS......
  • Java中子类构造时可以做的事
    在Java中,当子类的构造方法运行时,第一行默认会调用父类的构造方法(隐式调用super()),或者由显式调用指定的父类构造方法(如super(args...))。这是Java语言规范的一部分,目的是确保在子类实例化之前,父类部分的初始化能够完成。虽然这种调用机制是固定的,但仍有一些方式可以在构造方......
  • 【老白学 Java】Warship v2.0(一)
    Warshipv2.0(一)文章来源:《HeadFirstJava》修炼感悟。上一篇,简版的「Warship」项目终于完工。从本章开始,老白准备在简版基础上进行升级改造,逐步打造出「Warshipv2.0」。开篇前,老白先介绍一下「数组列表」对象,它是这个项目不可缺少的重要工具。如果师兄们感兴趣,可以......
  • Java批量解析微信dat文件,微信图片
    以下是java代码,直接可用,不用手动计算异或值此处的jdk版本需要1.8以上…,另外两个参数(解析文件路径和输出路径)需要改成自己的哦~此处的原理是判断图片文件的十六进制特征码。第一种:weChatImgRevert.javapackagecom;importjava.io.File;importjava.io.FileInputStream;impor......