Java面试篇基础部分-Java泛型详解

导语
  Java中泛型的本质是参数化类型,泛型提供了编译时类型的安全检测机制。泛型机制允许程序在编译的时候检测非法的类型,例如要实现一个对于字符串、整型、浮点型、对象类型等比较其大小的方法,就可以使用泛型,在使用的时候在明确所要比较的数据类型就可以了。

在这里插入图片描述
  当然如果不想使用泛型对象来作为参数的话,也可以通过Object类型来实现参数任意处理,因为Object是所有对象类型的父类。在具体使用的时候可以根据强制类型转换的方式来对使用的对象进行处理操作。

  使用强制类型转换的时候,必须要求开发人员明确地知道实际参数的引用类型,不然不能进行强制类型转换的操作。这种错误在程序编译的时候是不会出现的,只有在正式运行的时候才能检测到具体的参数类型是否安全。

  使用泛型的好处是在编译的时候就能检测到所要转换的类型是否正确,保证编译的安全性,同时泛型到具体数据类型的所有的强制性的类型转换都是由Java自身来完成,这样的话本身也是提高了代码的安全性。

常用的泛型标记

  首先需要知道的常用的泛型标识都有哪些?

  • 1、E-Element 在集合中使用,表示在一个集合中存放的元素
  • 2、T-Type 表示Java类,包括提供的基本的Java类以及自定义的Java类
  • 3、K-Key 在Map中使用,表示KV键值对的K值
  • 4、V-Value 表示Map中的V的值
  • 5、N-Number 表示数值类型的数据,常用来表示Double、Integer等类型。
  • 6、?表示暂时不确定Java的类型有什么,类似于统配的操作。

  类型通配符使用“?” 表示所有类型的数据参数,例如再List<?>的定义中,说明在List中课可以放入任何的参数类型。

  在使用泛型的时候,如果是想要将类的继承关系中加入泛型中进行使用,这个时候就需要对泛型类型做一定的限制,具体的操作有如下的两种

  对泛型的上限进行操作<? extends T>

  Java中 使用通配符“?”和extends关键字来指定泛型的上限,具体的用法就是<? extends T>,它表示这个通配符代表的类型是T这个类型的子类或者是实现的子接口类型。

  对泛型操作下限的限定<? super T>
  使用通配符?和super关键字来指定泛型的下限,表示通配符代表的类型是T类型的父类或者是父类的借口类型。

泛型方法

  泛型方法指的是参数的传入定义使用泛型类型,这样做的好处就是在使用方法的时候可以传入不同类型的参数对象,然后方法体内部根据不同的参数进行不同的类型操作

public static <T> void testMethod(T ... inputArray)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1534076.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

OAExploit一款基于OA产品的一键扫描工具

OAExploit一款基于OA产品的一键扫描工具 01 项目介绍 一款扩展性高的渗透测试框架渗透测试框架 出现卡死的几种情况&#xff1a;1.点击按钮太快 2. 打印log 的异常 02 工具展示

【有啥问啥】复习变分下界即证据下界(Evidence Lower Bound, ELBO):原理与应用

复习变分下界即证据下界&#xff08;Evidence Lower Bound, ELBO&#xff09;&#xff1a;原理与应用 变分下界&#xff08;Variational Lower Bound&#xff09;&#xff0c;也称为“证据下界”&#xff08;Evidence Lower Bound, ELBO&#xff09;&#xff0c;是概率模型中的…

git编译安装报错

编译安装步骤 卸载旧的 yum -y remove gitcd /usr/local/src/wget https://www.kernel.org/pub/software/scm/git/git-2.15.1.tar.xztar -vxf git-2.15.1.tar.xzcd git-2.15.1make prefix/usr/local/git allmake prefix/usr/local/git installecho "export PATH$PATH:/usr…

c#中给winform定义快捷键的几种方式

快捷键的使用在日常的开发中频率比较高&#xff0c;这里总结了最常见的各种快捷键的设置方式&#xff0c;需要的时候大家直接照抄就可以了&#xff0c;不用再去查询如何实现了。 文章目录 一、按钮快捷键二、菜单快捷键三、全局快捷键1、重写ProcessCmdKey2、使用KeyPreview属…

操作系统的重点笔记-1

一、操作系统的设计目标 1.易用性 使计算机易于使用&#xff0c;提供文件抽象后&#xff0c;对文件的操作就是对磁盘的操作&#xff0c;不再需要考虑如何通过控制磁盘移动&#xff0c;实现对磁盘某个信号的读写细节 2.高效性 完成特定功能的效率&#xff0c;如时间效率&…

Golang | Leetcode Golang题解之第404题左叶子之和

题目&#xff1a; 题解&#xff1a; func isLeafNode(node *TreeNode) bool {return node.Left nil && node.Right nil }func sumOfLeftLeaves(root *TreeNode) (ans int) {if root nil {return}q : []*TreeNode{root}for len(q) > 0 {node : q[0]q q[1:]if no…

Win11 频繁蓝屏重启

一、问题描述 最近在使用笔记本的时候时不时的蓝屏重启&#xff0c;甚至重启完进系统立马蓝屏重启&#xff0c;还好我凭借快速的手速拍到了错误的原因&#xff0c;如下图所示。 失败的操作是Netwtw12.sys&#xff0c;查了一下这个错误是由于无线网卡导致的&#xff0c;经过测试…

全网最适合入门的面向对象编程教程:48 Python函数方法与接口-位置参数、默认参数、可变参数和关键字参数

全网最适合入门的面向对象编程教程&#xff1a;48 Python 函数方法与接口-位置参数、默认参数、可变参数和关键字参数 摘要&#xff1a; 在 Python 中&#xff0c;函数可以接受多种不同类型的参数&#xff0c;包括位置参数、默认参数、可变参数和关键字参数等&#xff0c;理解…

什么是交换机级联?

在现代计算机网络中&#xff0c;交换机级联是一种广泛应用的技术&#xff0c;有助于提升网络的扩展性和灵活性。本文将深入探讨交换机级联相关知识&#xff0c;详细介绍其基本概念和连接配置方法&#xff0c;并对常见技术问题进行解答。 交换机级联概述 交换机级联是指通过将…

聊点基础的,关于监控,关于告警(prometheus—+grafana+夜莺如何丝滑使用?)

事情的起因是这样的&#xff0c;昨天又群友在群里咨询一个关于grafana和prometheus配置文件的用法&#xff0c;整了半天也没回复&#xff0c;正好知道就帮了一把&#xff0c;今天整理成文章&#xff0c;希望帮到更多的朋友 大致问题的话就是图里面提到的几个&#xff0c;其实都…

webpack的热更新原理

Webpack热更新&#xff08; Hot Module Replacement&#xff0c;简称 HMR&#xff09;&#xff0c;无需完全刷新整个页面的同时&#xff0c;更新所有类型的模块&#xff0c;是 Webpack 提供的最有用的功能之一。 保留在完全重新加载页面期间丢失的应用程序状态。只更新变更内容…

Qt_控件的QWidget属性介绍

目录 1、QWidget的核心属性 2、enabled 3、geometry 3.1 代码测试geometry 4、windowTitle 4.1 代码测试windowTitle 5、windowIcon 5.1 QIcon设置图标 5.2 qrc机制 5.3 代码测试windowIcon 6、windowOpacity 6.1 代码测试windowOpacity 7、cursor 7.1 代码测试…

多线程篇(线程池 - 整体介绍)(持续更新迭代)

目录 一、线程池&#xff08;并发编程的艺术&#xff09; 1. Java中的线程池 1.1. 线程池的实现原理 1.2 线程池的使用 1. 线程池的创建 2. 向线程池提交任务 3. 关闭线程池 4. 合理地配置线程池 5. 线程池的监控 1.3 本章小结 2. Executor框架 2.1 Executor框架简介…

2-93 基于matlab的无人机FMCW(频率调制连续波)毫米波高度计雷达仿真

基于matlab的无人机FMCW&#xff08;频率调制连续波&#xff09;毫米波高度计雷达仿真&#xff0c;不考虑环境杂波和收发信号隔离泄漏。通过考虑雷达天线、波束形成、信号传播、回波接收等环节影响。建立FMCW毫米波雷达系统的数学模型&#xff0c;评估无人机在不同高度下的高度…

Google推出Data Commons解决AI“幻觉”

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

LeetCode 热题 100 回顾12

干货分享&#xff0c;感谢您的阅读&#xff01;原文见&#xff1a;LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 &#xff08;简单&#xff09; 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标…

PCL 点云基于曲率大小渲染颜色

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2处理后点云 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff09; 一、概…

突破行业边界,构建可持续未来:2024生态系统架构创新与开放标准赋能全球业务增长

在全球数字化浪潮的推动下&#xff0c;企业面临着前所未有的机遇与挑战。如何在动态市场中实现跨行业的合作、确保业务的连续性并推动可持续发展&#xff0c;成为了每个企业高管和技术领导者亟待解决的关键问题。生态系统架构与开放标准的结合&#xff0c;不仅能够打破传统行业…

力扣刷题--73. 矩阵置零【中等】

题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 算法分析 标签&#xff1a;标记数组 额外定义一个标记二维数组&#xff0c;用于存储matrix0存储的位置在哪里&#xff0c;如果是matrix…

Qt与Udp

(1)绑定端口 (2)广播 用udp实现广播通信_udp广播-CSDN博客 数据的发送是面向整个子网的&#xff0c;任何一台在子网中的计算机都可以接收到相同的数据。 如果一台机器希望向其他N台机器发送信息&#xff0c;这时候可以使用UDP的广播。 --------------- 广播地址&#xff1…