当泛型遇到重载

当泛型遇到了重载,好戏,就发生了。

请看下面代码:

img

问题:代码能正确编译吗?

这个题目是一个考察泛型的题目。java里面,泛型实际上是“伪泛型”,并不像C#那样是实际上的泛型。

IDE会提示我们下面的错误:

Method test(List) has the same erasure test(List) as another method in type TR

在java中,泛型只存在于源代码之中,在编译过后的代码中,泛型信息已经被“擦除”了。上面的代码被编译之后的样子应该是下面类似的代码:

img

两个函数具有相同的签名,当然编译器会拒绝为我们编译这样的代码。

在java这种伪泛型中,List和List,**编译之后,**是相同的类型。

但是在c#这种真实泛型中,上面两个就是不同的类型了。

故事到这里就结束了吗??显然没有

------------------------------------昏昏咯咯-------------------------------------

看下面代码:

img

问,这段代码能正常编译吗?

熟悉class文件结构的人能知道,这段代码能正常编译(重载成功了!)。而且还能正常执行呢!!!

img

代码输出:

integer
string

疑问来了。jvm规定,函数的返回值并不参与“函数签名”的生成,那么仅仅改变了函数返回值,从而让不能编译的代码通过了编译并且能正常执行了,这不是很矛盾吗?

原因在于,虽然函数的返回值不参与函数签名的生成,但是在class文件中,只要描述符不完全一致的两个方法就能共存于一个class文件中。

【java代码中,函数的特征签名仅仅包括方法名称、参数类型以及参数顺序。但在字节码中,特征签名还包括了方法的返回值以及受查异常表,这就是为什么在class文件中,其他都相同仅仅返回值不同的两个方法能共存的原因】

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle 查看时间对应周,oracle数据获取当前自然周,当前周的起始和结束时间

select to_char(sysdate,iw) from dual; --本周是第几个自然周select to_char(sysdate,yyyy) into v_sbzq_nf from dual; -- 当前年份SELECT to_char(TRUNC(TO_DATE(to_char(sysdate,yyyy-MM-dd),yyyy-MM-dd),IW),yyyy-MM-dd) FROM DUAL;--本周的起始时间(本周周一日期)SELECT …

redis查询所有key命令_三歪推荐:Redis常见的面试题

本文公众号来源:科技缪缪作者:科技缪缪本文已收录至我的GitHub说说Redis基本数据类型有哪些吧字符串:redis没有直接使用C语言传统的字符串表示,而是自己实现的叫做简单动态字符串SDS的抽象类型。C语言的字符串不记录自身的长度信息…

springboot系列——redisTemplate和stringRedisTemplate对比、redisTemplate几种序列化方式比较

文章目录一、redisTemplate和stringRedisTemplate对比1、StringRedisTemplate2、RedisTemplate二、redisTemplate序列化方式比较1、性能测试对比2、性能总结3、方案一、考虑效率和可读性,牺牲部分空间4、方案二、空间敏感,忽略可读性和效率影响5、使用示…

oracle rman备份慢,诊断Oracle RMAN备份慢的原因

㈠ 先在系统层面查询CPU、IO使用情况:top、iostat、sar...等㈡ EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();㈢ rman target / debug trace /tmp/rmandebug.txt log/tmp/rman_log20130727.txt执行备份㈣ EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();㈤ …

mysql查询默认排序规则_深究 mysql 默认排序, order by 的顺序【收藏】

mysql 语句中如果没有使用 order by 来排序,通常会用 主键正序排列,但是有的时候不是这样,来看一个实例。实例群友问:请教一个问题,mysql 默认排序问题,当sql 语句 的排序没有指定 主键(id&…

Spring Boot jackson配置使用详解

Spring Boot系列-json框架jackson配置详解 T1 - 前言 目前Java最常见的3中JSON操作框架分别为Gson、Jackson、FastJson,该篇文章主要讲解jackson在SpringBoot环境中各配置项的具体作用。 T2 - 环境依赖 jackson是spring-boot的web/webflux框架默认依赖的json库&…

oracle字段序列自增长,ORACLE序列(字段自增长)

序列:是oacle提供的用于产生一系列唯一数字的数据库对象。 自动提供唯一的数值 共享对象 主要用于提供主键值 将序列值装入内存可以提高访问效率创建序列:1、 要有创建序列的权限 create sequence 或 create any sequence2、 创建序列的语法CREATE SEQUENCE seque…

频率统计表用c语言_空间矢量脉宽调制建模与仿真(基于C语言的SIMULINK仿真模型 | 基于SVPWM模块的仿真)...

文末有仿真模型下载方式1.1 基于C语言的SIMULINK仿真模型使用C语言在MATLAB/SIMULINK中仿真,需要借助s-function builder模块实现。七段式SVPWM仿真模型如图1-1所示。仿真解算器(Solver)选择变步长(Variable-step)、od…

pythonrandom库seed_Python

Python seed() 函数 描述 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。 语法 以下是 seed() 方法的语法: import random random.seed ( [x] ) 我们调用 random.random() 生成随机数时,每一次生成的数都是随机的。但是…

php基本语法 格式,PHP 基本语法格式

PHP 基本语法格式标准代码如下:复制代码 代码如下:...?>短标签模式(此模式需要修改PHP配置,让PHP支持短标签模式):复制代码 代码如下:...?>注释:复制代码 代码如下:/* ...*///#时间: 2009-12-14Abs: 取得绝对值. Acos: 取…

spring @Primary-在spring中的使用

在spring 中使用注解,常使用Autowired, 默认是根据类型Type来自动注入的。但有些特殊情况,对同一个接口,可能会有几种不同的实现类,而默认只会采取其中一种的情况下 Primary 的作用就出来了。下面是个简单的使用例子。…

php获取手机的mac地址,Android手机获取Mac地址的方法

[导读]这篇文章主要为大家详细介绍了Android手机获取Mac地址的方法,具有一定的参考价值最常用的方法,通过WiFiManager获取:/*** 通过WiFiManager获取mac地址* param context* return*/private static String tryGetWifiMac(Context context) {WifiManage…

python使用蓝牙功能_python bluetooth蓝牙信息获取蓝牙设备类型的方法

python 获取蓝牙设备类型 扫描蓝牙设备获取到的信息中,无法判断扫描到的蓝牙设备属于什么类型的设备。 扫描蓝牙信息使用的是python 里面的bluetooth模块。 首先扫描出来的是这样的信息 (74:60:FA:FD:FC:49,HUAWEI P30,5898764) 可根据5898764来判断是什么蓝牙设备。…

MySQL建表字段长度的限制、汉字和字母占字节数

varchar(N),N指的是最大字符数,不是字节数。 记住: (1)MySQL要求一个行的定义长度不能超过65535。 (2)单个字段如果大于65535,则转换为TEXT 。 (3)单行最…

linux 服务器启用端口,linux服务器放行端口

一、默认使用iptables的系统(例如centos6)1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。下面是命令实现:iptables -P INPUT DROPiptables -P FORWARD DROPiptables -P OUTPUT DROP再用命令iptables -L -n查看 是否设置好, 好看到全部 DROP 了这…

python3 xpath_Python 3中用XPath解析XML

我有以下xml:Biscuits Wrapped Finished Biscuits Biscuits (Wrapped)Biscuits Sweet Finished Biscuits Biscuits (Sweets)Biscuits Savoury Finished Biscuits Biscuits For Cheese....我已使用以下代码将其加载到树中:try: groups etree.parse(PRODU…

MySQL 无符号和有符号的区别

随笔记录: mysql无符号和有符号的区别 无符号unsigned 表示设置的的数据为0或者正数; 有符号则可以是负数 -; 内存占比 有符号 0-255 无符号 -127~127

linux下tomcat启动后无进程,Linux中Tomcat shutdown.sh后进程仍然存在解决办法

最近我们在使用Jenkins自动化部署项目时,在生产liunx环境下,使用脚本shutdown.sh停止tomcat服务,然后再start之后发现应用无法访问了,后台查看tomcat进程是发现有个2个tomcat进程,说明之前的shutdown并没有完全停掉tom…

扫地机器人电路原理图_扫地机有这一台就够了:石头扫地机器人T6 首拆

听说集齐13台扫地机器人可以召唤扫地机神兽,所以集齐了22台扫地机后我的神兽呢?自从上个月入手了石头科技出品的小瓦青春版扫地机之后已经集齐了所有小米(石头)系扫地机。小瓦青春版是一款无序清洁的扫地机产品,也是石头科技价格最低的入门级…

让我放弃FastDFS拥抱MinIO的8个瞬间

目前可用于文件存储的网络服务选择有很多,比如阿里云OSS、七牛云、腾讯云等等,但是收费都有点小贵。为了帮公司节约成本,之前一直是使用fastDFS作为文件服务器,准确的说是图片服务器。直到我发现了MinIO,我决定放弃Fas…