java泛型的简介说明

2023-11-11

转自:

java泛型的简介说明

下文笔者讲述java泛型的简介说明,如下所示

在JDK5中
Java语言引入了泛型机制
但是这种泛型机制其实是通过类型擦除来实现
即Java中的泛型只在程序源代码中有效(源代码阶段提供类型检查)
在编译后的字节码中自动用强制类型转换进行替代
也就是说
Java语言中的泛型机制其实就是一颗语法糖
相较与C++、C#相比,其泛型实现实在是不那么优雅

public static void main(String[] args) {
    Map<String,String> map = new HashMap<String,String>(16);
    map.put("name","java265.com");
    String name = map.get("name");
    System.out.println(name);
}

通过jad反编译出来的代码
public static void main(String[] args) {
    //类型擦除
    Map map = new HashMap();
    map.put("name", "java265.com");
    //强制转换
    String name = (String)map.get("name");
    System.out.println(name);
}
注意事项:
  通过上面反编译后的代码我们发现虚拟机中其实是没有泛型的
  只有普通类和普通方法
  所有泛型类的类型参数在编译时都会被擦除
  泛型类并没有自己独有的Class类对象
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java泛型的简介说明 的相关文章

随机推荐

  • Qt基础知识-创建Qt程序,Qt Creater常用快捷键,创建组件,对象树

    1 简介 Qt是一个跨平台的图形引擎 1991年由奇趣科技开发 优点 跨平台 接口简单易于上手 一定程度上简化了垃圾回收机制 2 创建Qt程序 名称 不能有空格 不能有中文 路径 不能有中文 创建cpp文件时选择继承的3个类 Qwidget
  • Nagle算法

    说明 本文是最近项目上使用tcp时遇到的问题找到的原因 参考了网络上的几篇文章整理出来 如有版权问题 请留言 Nagle算法用于对缓冲区内的一定数量的消息进行自动连接 该处理过程 称为Nagling 通过减少必须发送的封包的数量 提高了网络
  • ArabellaCPC 2019 I:Bashar and Hamada 贪心

    Bashar and Hamada 给你一个长度为 n 的数组 选k个数 使F ai aj k个数 i j 求k 2 3 n时 F的最大值 首先n 2时 肯定选择数组中的最大值和最小值 这样F2 max min F2最大 n 3时 在F2的
  • R语言文本分析《三国演义》

    数据读取与包的加载 由于最近对文本分析比较感兴趣 所以分析三国演义的文本 getwd setwd E 三国 library jiebaR library ggplot2 library jpeg library reshape2 libra
  • 2023年信息与通信工程国际会议(JCICE 2023)

    2023年信息与通信工程国际会议 JCICE 2023 重要信息 会议网址 www jcice org 会议时间 2023年3月17 19日 召开地点 西安 截稿时间 2023年2月10日 录用通知 投稿后2周内 收录检索 EI Scopu
  • 如何升级composer

    最近 使用composer时 发现提示升级了 本文记录一下composer的升级过程 升级composer 升级的办法嘛 也很简单 1 方法一 1 先获取composer安装地址 composer h 2 再用 1 获取的地址 compos
  • 为什么要使用Struts框架

    在JavaWEB项目中 原生的Servlet作为控制器在项目开发中难免会有一些弊端 1 每一个请求编写一个servlet 针对一个小功能模块就可能需要四个以上的自定义的Servlet 2 Servlet处理请求时需要调用多次的getPara
  • vue3的基本使用(超详细)

    一 初识vue3 1 vue3简介 2020年9月18日 vue3发布3 0版本 代号大海贼时代来临 One Piece 特点 无需构建步骤 渐进式增强静态的 HTML 在任何页面中作为 Web Components 嵌入 单页应用 SPA
  • 【暑期每日一题】洛谷 P6437 [COCI2011-2012#6] JACK

    题目链接 P6437 COCI2011 2012 6 JACK 洛谷 计算机科学教育新生态 luogu com cn 题目描述 给定 n 个正整数 a1 an 请从中选择 3 个数字 满足他们的和不大于给定的整数 m 请求出这个和最大可能是
  • IP地址、子网掩码、网关、DNS的关系及sicket的常识

    1 什么是IP地址 32 4 8 255 D 1111 1111 B 28 1 所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址 按照TCP IP协议规定 IP地址用二进制来表示 每个IP地址长32bit 比特换
  • 怎么在java中关闭一个thread

    怎么在java中关闭一个thread 我们经常需要在java中用到thread 我们知道thread有一个start 方法可以开启一个线程 那么怎么关闭这个线程呢 有人会说可以用Thread stop 方法 但是这个方法已经被废弃了 根据O
  • ai画面怎么调大小_AI中怎么把图像等比例扩大或缩小尺寸

    展开全部 AI中么把图像等比例扩大或缩小尺寸步骤如e69da5e6ba903231313335323631343130323136353331333366303830下 1 打开ai的软件 执行菜单栏中文件 新建 或者直接使用快捷键Ctrl
  • 什么是Agent

    一方面 Agent技术为解决新的分布应用问题提供了有效途径 另一方面 Agent技术为全面准确地研究分布计算系统的特点提供了合理的概念模型 在分布计算领域 人们通常把在分布式系统中持续自主发挥作用的 具有以下特征的活着的计算实体称为Agen
  • gh-ost大表DDL工具源码阅读

    gh ost大表DDL工具源码阅读 最终目的 开发环境与测试数据库准备 一个简单的ddl案例 debug分析程序执行过程 vscode debug配置 变量介绍 核心处理逻辑 分析我的需求 最终目的 尝试通过阅读源码 多测试熟悉gh ost
  • 多线程学习

    线程的三种创建方式 1 继承Thread类 创建线程的快捷方式一 继承Thread 重写run方法 调用start开启线程 总结 注意线程开启不一定执行 由cpu调度执行 public class TestThread1 extends T
  • 可迭代对象__iter__(), __next__()

    一 解释 在 Python 中 迭代是指逐个访问容器 如列表 元组 集合 字典等 中的元素 为了实现迭代 我们需要使用可迭代对象和迭代器 可迭代对象 Iterable 具有 iter 方法的对象被称为可迭代对象 这个方法返回一个迭代器 迭代
  • git使用socks5代理提示:Unsupported proxy syntax in 127.0.0.1:1080

    提示说是语法错误 打开 gitconfig文件查看代理 http proxy socks5 127 0 0 1 1080 https proxy socks5 127 0 0 1 1080 去掉前后的单引号 错误消失 http proxy
  • sql server 2008 r2各个版本的区别与选择

    windows server 2012 r2 standard安装sql server 2008 R2 https blog csdn net maoiur article details 78322175https blog csdn n
  • UniCode编码表

    Unicode编码则是采用双字节16位来进行编号 可编65536字符 基本上包含了世界上所有的语言字符 它也就成为了全世界一种通用的编码 而且用十六进制4位表示一个编码 非常简结直观 为大多数开发者所接受 特别是十六进制编码后 可以解决汉字
  • java泛型的简介说明

    转自 java泛型的简介说明 下文笔者讲述java泛型的简介说明 如下所示 在JDK5中 Java语言引入了泛型机制 但是这种泛型机制其实是通过类型擦除来实现 即Java中的泛型只在程序源代码中有效 源代码阶段提供类型检查 在编译后的字节码