一篇文章带你了解Java泛型的super和extends

yizhihongxing

一、Java泛型的super和extends

Java泛型中的extends和super是两个非常重要的关键字,它们可以用来限定泛型的类型范围。一个类型可以使用extends关键字限制范围上界,使用super关键字限制范围下界。

上界使用extends关键字来表示,它的作用是限定参数的类型只能是继承自某个类的子类或某个实现了某个接口的实现类。下界使用super关键字来表示,它的作用是限定参数的类型只能是某个类的父类。

二、使用extends关键字限定泛型范围

以下是使用extends限定泛型范围的示例:

public class Test {

    public static void main(String[] args) {
        List<? extends Number> list1 = new ArrayList<Integer>();
        List<? extends Number> list2 = new ArrayList<Float>();
        //List<? extends Number> list3 = new ArrayList<String>(); 错误,String不是Number的子类
    }

}

这个示例中,我们使用泛型通配符(?)来表示一个不确定的类型,然后通过extends关键字来限定这个类型必须是Number的子类。在实际使用中,我们可以将实现了Number的子类,例如Integer和Float作为具体类型传递给这个泛型。

需要注意的是,使用extends关键字定义的泛型类型只能用来读取数据,不能用来写入数据,即它是只读的。

三、使用super关键字限定泛型范围

以下是使用super限定泛型范围的示例:

public class Test {

    public static void main(String[] args) {
        List<? super Integer> list1 = new ArrayList<Number>();
        List<? super Integer> list2 = new ArrayList<Object>();
        //List<? super Integer> list3 = new ArrayList<Float>(); 错误,Float不是Integer的父类
    }

}

这个示例中,我们使用泛型通配符(?)来表示一个不确定的类型,然后通过super关键字来限定这个类型必须是Integer的父类。在实际使用中,我们可以将Integer和它的父类Number和Object作为具体类型传递给这个泛型。

需要注意的是,使用super关键字定义的泛型类型只能用来写入数据,不能用来读取数据,即它是只写的。

四、总结

在Java泛型中,使用extends和super关键字可以限定泛型的类型范围,从而有效地增强了泛型的类型安全性。需要注意的是,extends只能用来读取数据,super只能用来写入数据,二者不能混用。在实际使用中,我们可以根据具体情况选择使用哪个关键字。

以上是针对“一篇文章带你了解Java泛型的super和extends”的完整攻略,其中包括了使用extends和super的示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一篇文章带你了解Java泛型的super和extends - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • MybatisPlus处理四种表与实体的映射及id自增策略分析

    MybatisPlus处理四种表与实体的映射及id自增策略分析 在MybatisPlus中,我们一般有四种表与实体的映射方式,即普通表、自动填充表、防篡改表和树形表。每种表都要根据不同的情况处理其中的id自增策略。本攻略将介绍如何处理这些表与实体的映射关系及id自增策略。 普通表的映射及id自增策略 普通表是最简单的映射关系。对于普通表,我们只需要在实体类上…

    other 2023年6月25日
    00
  • python3中的类继承你真的了解吗

    下面是对“Python3中的类继承你真的了解吗”这个主题的详细讲解。 1. 什么是类继承 类继承是一种通过创建一个新的类来继承已有类的属性和方法的机制。在Python中,类的继承是通过关键字class和object实现的。 2. 类继承的基本语法 在Python中,继承一个类时,可以在新类的定义中使用原始类的名称作为关键字class和继承类的名称之间的基类列…

    other 2023年6月26日
    00
  • win7系统重启后ip地址丢失怎么办 win7电脑重启后ip地址丢失不能上网的解决方法

    解决win7系统重启后ip地址丢失不能上网的方法 在使用Windows 7电脑上网时,有时会遇到重启电脑后IP地址丢失的情况,导致无法上网,这时我们需要重新设置IP地址才能继续上网。下面就是具体的解决方法: 步骤一:检查网络适配器设置 右键点击桌面左下角的“开始”菜单,选择“设备管理器”打开设备管理器窗口,找到“网络适配器”选项,展开并找到自己的网卡,右键点…

    other 2023年6月27日
    00
  • 电脑启动中的常见故障的种类及其解决方法(图文)

    电脑启动中的常见故障及其解决方法 在使用电脑时,经常会出现各种启动问题,如不能开机、启动慢、系统崩溃等。下面将详细讲解电脑启动中常见故障的种类及其解决方法。 1. 电脑不能开机 如果电脑不能开机,有可能是以下原因: 1.1 电源故障 检查电源插头、电源线、开关,看它们是否正常工作。如果电源灯不亮或电源风扇不动,则可能是电源本身故障。 1.2 主板故障 如果电…

    other 2023年6月27日
    00
  • vb的if和elseif

    以下是VB的if和elseif的完整攻略,包含两个示例说明: if语句 if语句是VB中最基本的条件语句,用于根据条件执行不同的代码块。以下是if语句的语法: If condition Then ‘ code to execute if condition is true End If 其中,condition是一个布尔表达式,如果为True,则执行Then…

    other 2023年5月9日
    00
  • Android启动内置APK和动态发送接收自定义广播实例详解

    Android启动内置APK和动态发送接收自定义广播实例详解 本攻略将详细讲解如何在Android中启动内置APK和动态发送接收自定义广播的实现方法。 启动内置APK 首先,将内置APK文件放置在assets目录下。 在代码中使用AssetManager来获取内置APK文件的路径。 java AssetManager assetManager = getAs…

    other 2023年10月13日
    00
  • Android中使用ScrollView实现滑动到底部显示加载更多

    当在Android应用中需要实现滑动到底部时加载更多数据的功能时,可以使用ScrollView来实现。下面是使用ScrollView实现滑动到底部加载更多的完整攻略: 首先,在XML布局文件中定义一个ScrollView,并在其中添加一个垂直方向的线性布局(LinearLayout)作为ScrollView的子视图。这个线性布局将用于显示所有的数据项。 &l…

    other 2023年8月25日
    00
  • 14款优秀的javascript调试工具大盘点

    以下是14款优秀的JavaScript调试工具的攻略,包括功能介绍、使用方法和示例说明。 1. Chrome DevTools Chrome DevTools是Chrome浏览器自带的调试工具,可以用于调JavaScript、CSS和HTML。它提供了丰富的功能,包括代码调试、性能分析、网络监控等。 使用方法:在Chrome浏器中按下F12键或右键点击页面并…

    other 2023年5月7日
    00
合作推广
合作推广
分享本页
返回顶部