Java中范型的重载

泛型和方法的重载 首先必须有泛型声明,告知编译器当前方法使用自定义泛型格式:权限修饰符 是否有静态 <泛型占位符> 方法名(形式参数列表)【重点注意】形式参数列表中必须有一个参数对应的自定泛型,用于明确泛型对应的具体数据类型//实际参数为int 类型test(10);//实际参数为Demo3类对象//匿名对象直接作为方法的参数//实际参数为字符串类型test("字符串");String str = getType("字符串");/** 阅读详情

问题: 什么是范型???

答案:java中可以用T或其他大写字母代替一个未知的类型,例如 定义类的时候 class A<T>中的T就是一个范型,T可以代替任何类型或者类。

问题:为什么java的范型是一个假范型??

答案:因为java的代码在编译成class文件之后,会将范型给去掉。会用object代替范型。所以java的范型是假范型。
例如:
`
public (T) List<T> get(List<T> obj){
} 
编译之后变成:
public List<Object> get(List obj) {
}
`

问题:为什么java中用范型进行重载不可以??

例如代码如下:
class A {
	public void say(List<Integer> a) {
	}
	
	public void say(List<String> b) {
	}
}
上述代码,会报错,为什么呢???因为java在编译之后,会将范型给去掉,所以编译之后代码是如下:
class A {
	public void say(List a) {
	}
	
	public void say(List b) {
	}
}
两个方法是一摸一样的,而在java中同一个方法不能存在两个,所以会报错。

问题:为什么jdk1.6中返回值不同的两个范型的方法,可以同时存在??

例如代码如下:
class A {
	public Integer say(List<Integer> a) {
	return 0;
	}
	
	public String say(List<String> b) {
	return null;
	}
}
答案:因为java代码中确认唯一方法(特征签名)是根据方法名+参数顺序+参数类型,而在字节吗中确认唯一方法(特征签名)是根据返回值+方法名+参数顺序+参数类型+异常表。因为返回值不同,所以编译通过之后上面两个方法是唯一确认的。不过仅仅在jdk1.6中可以,其余版本编译不通过,会报错。因为在java代码中就会认为他们是一样的。
Java泛型的重写与重载:深入理解@Override注解 本文深入探讨了Java泛型在方法重写和重载中的作用与影响。通过分析带有@Override注解的示例代码,揭示了泛型在继承中的特定行为,特别是非泛型子类覆盖泛型超类方法的特殊情况。同时,文章还介绍了类型擦除的概念及其对运行时类型检查的限制,强调了在泛型编程中遵循正确重写规则的重要性。 阅读详情

相关推荐

浅谈Java泛型通配符解决了泛型的许多诟病(如不能重载)

下面小编就为大家带来一篇浅谈Java泛型通配符解决了泛型的许多诟病(如不能重载)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

Java八股文——重载+泛型(一)

java十分详细的关于泛型以及重载的讲解

PjhDepon的博客 618

远程桌面报‘数据加密错误‘?可能是网卡设置惹的祸(附TCP校验关闭教程)

本文深入分析远程桌面连接中出现的'数据加密错误'问题,指出网卡设置可能是根本原因,并提供详细的TCP校验关闭教程。通过禁用网卡高级属性中的'TCP校验和IPv4'与'IPv4承载卸载'功能,可有效解决RDP协议与硬件加速的兼容性问题,适用于Windows和Linux系统。

view3的博客 276

java重载看什么_【细说Java】方法重载的简单介绍

1. 什么是重载方法名称相同,但它们的参数类型或个数不同,这样,方法在被调用时编译器就可以根据参数的类型与个数的不同加以区分,这就是方法的重载。既然可以通过参数类型或参数个数来作为重载条件,那返回值是否可以作为重载的条件呢?代码如下:public intreturnType() {return 2;}public floatreturnType() {return2f;}这时候如果这样调用此方法:...

weixin_34509196的博客 224

Stata中介效应分析实战:从sgmediation安装到Sobel检验结果解读

本文提供了Stata中进行中介效应分析的完整实战指南,重点介绍了第三方命令sgmediation的安装、配置与使用。通过详细案例演示了如何运用Sobel检验分析变量间的间接效应,并深入解读检验结果,帮助研究者厘清自变量影响因变量的具体路径。文章还探讨了Sobel检验的原理、优缺点及结果报告规范,是进行实证研究的实用参考。

weixin_29197051的博客 630

信创改造实战:SpringBoot项目迁移到宝兰德BES 9.5.5的完整避坑指南(附依赖与web.xml配置)

本文详细介绍了将SpringBoot项目迁移到宝兰德BES 9.5.5的完整流程,包括依赖改造、web.xml配置降级等关键步骤。通过实战案例和避坑指南,帮助开发者高效完成国产中间件适配,确保项目平稳运行。特别针对Tomcat依赖排除和BES适配器选择提供了专业建议。

weixin_30689307的博客 741

泛型方法的重载、JAVA的泛型?泛型擦除

Java的方法重载一般指在同一个类中的两个同名方法,规则很简单:两个方法必须具有不同的方法签名;由于编译器不能仅仅通过方法的返回值类型来区分重载方法,所以如果两个方法只有返回类型不同,其它完全一样,编译是不能通过的。这个时候会编译器报错,由于Java的泛型采用擦除法实现,List和List在运行时是完全一样的,都是List类型。只有返回值类型不同,这在两个普通方法的重载中是不允许的,一个类不能同时继承两个具有相同擦除类型的父类,也不能同时实现两个具有相同擦除的接口。

jj89929665的博客 1105

MuJoCo 关节角速度记录与可视化,监控机械臂运动状态

1. 手动计算关节速度,其中timestep为仿真步长。2. 使用data.qvel直接取得关节速度。

darcsdn 767

Java中的语法糖

一、范型 1. C#和Java范型的区别 在C#中范型是切实存在的,List<int>和List<String>就是两种不同的类型,它们在系统运行期间生成,有自己的虚方法表和类型数据,这种实现称为类型膨胀,基于这种方法实现的范型称为真实范型。 Java语言中的范型则不一样,它只存在于源码中,在编译后的字节码文件中,就已经被替换为原来的原生类型了,并且在相应的地方插入了...

weixin_30515513的博客 69

Matlab之fdesign的应用说明

fdesign 是 MATLAB 中用于数字滤波器设计的工具(属于),它提供了一种系统化的方式来定义滤波器参数并生成相应的滤波器。指定滤波器的频率、幅度等参数。例如,设计一个低通滤波器:Fs = 1000;% 采样率 (Hz)% 通带截止频率% 阻带截止频率Apass = 1;% 通带衰减 (dB)Astop = 60;% 阻带衰减 (dB)

嵌入式老牛的博客 1052

【K210+STM32项目】基于K210与STM32协同工作的智能垃圾分类系统设计与实现(更新3.0版本)(完整工程资料源码)

STM32F407STM32F407_2(含有app功能)

嵌入式技术开发 2492

java方法重载/重写

在JAVA中,多态主要体现为方法的重载和重写。 方法重载:同一个类中,方法名相同,参数列表不同(在编译器那层基本不会考虑返回参数)的两个或多个方法就视为这个几个方法是重载的。 Java的“重载机制”为开发者提供了便利的同时也规定了一系列的规范和限制。 方法重写:对应于父类和子类,方法名和方法描述符相同(参数列表和返回类型组成),就会产生重写,即子类的方法会覆盖掉父类的方法( 对了,静态方法的...

Chain的博客 423

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

什么是 Agent 的 Context Window?为什么它是 Agent 工程中最核心的约束之一?

我哎GIS博客 818

java中的方法签名

java方法签名 ● 组成 ○ 方法名。 ○ 参数列表(类型、个数、顺序)。 ● 注意! ○ 与返回值、修饰符以及异常无关。 ○ 在Class文件格式中,返回值不同,可以合法地共存于一个Class文件中。 ○ 范型中,类型擦除,List与List是相同参数List。 ○ 参数String… str 与参数String[] str 是相同参数。 ● 重写与重载 ○ 重写:同一个类中方法签名不同的方法。 ○ 重载:方法签名必定相同,返回值必定相同,访问修饰符子>父,异常类 子<父。 ...

Skiray的博客 1199

西门子V90伺服——章节0、西门子V90章节总述

格式规范:西门子V90伺服——章节1、产品介绍(1、伺服系统初步介绍)@[TOC](西门子V90伺服——章节1、产品介绍)课时1伺服系统初步介绍(1)课时2 伺服系统初步介绍(2)课时3 运动控制基础(1)课时4 运动控制基础(2)课时5 产品概览课时6 相关选件课时7 控制模式介绍(1)课时8 控制模式介绍(2)课时9 产品选型课时10 调试工具及相关资料介绍。

大小曲奇的博客 123

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C++不足之处讨论系列(四)--函数重载

以下文章翻译自Ian Joyner所著的《C++?? A Critique of C++ and Programming and Language Trends of the 1990s》 3/E【Ian Joyner 1996】原著版权属于Ian Joyner,征得Ian Joyner本人的同意,我得以将该文翻译成中文。因此,本文的中文版权应该属于我;-)该文章的英文及中文版本都用于非商业用途,

cber的专栏 1584

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java范型类型擦除

一. 概述 在上一篇范型博客中,主要讲解了范型的基本使用和设计,在本篇博客中主要讲解使用范型带来的问题和解决方法。 在使用java范型时,我们通常会遇到诸多问题,例如不能使用T.class,不能直接使用T t.method(),不能通过范型参数实现方法重载等等,这一切的原因都归结于-“范型类型擦除”。 二.什么是类型擦除 我们知道,jdk1.5以前是不支持范型的,以List为例,在Li

宇的博客 666

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

1-java基础

不可变对象指对象一旦被创建,状态就不能再改变,任何修改都会创建一个新的对象,如String、Integer及其它包装类,不可变对象最大的好处是线程安全java中常量池的概念主要有3个全局字符串常量池 , class文件常量池 , 运行时常量池定义jvm为了提升性能和减少内存开销,避免字符的重复创建,其维护了一块特殊的内存空间,即字符串池,当需要使用字符串时,先去字符串池中查看该字符串是否已经存在,如果存在,则可以直接使用, 如果不存在,初始化,并将该字符串放入字符串常量池中。

zjsheng_2018的博客 137

Dart 学习笔记

在Dart中,一切都是对象,一切对象都是class的实例,哪怕是数字类型、方法甚至null都是对象,所有的对象都是继承自Object 虽然Dart是强类型语言,但变量类型是可选的因为Dart可以自动推断变量类型 Dart支持范型,List<int>表示一个整型的数据列表,List<dynamic>则是一个对象的列表,其中可以装任意对象 Dart支持顶层方法(如main方法),也支持类方法或对象方法,同时你也可以在方法内部创建方法 Dart支持顶层变量,也支持类变量或对象变量

bihansheng2010的博客 557

java方法重载

JAVA方法重载      【介绍定义】         在Java 中,同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。在这种情况下,该方法就被称为重载(overloaded ),这个过程称为方法重载(method overloading )。方法重载是Java 实现多态性的一种方式。如果你以前从来没有使用过一种允许方法重载的语言,这个概念最初可能有点奇怪。但是

u014049072的专栏 441

Java自定义范型的应用技巧

我们在JAVA中 处处都用到了 范型 ,JAVA中的范型是从C++模板继承来的,不过 JAVA的 范型的功能 远远没有 C++那么强大 。 我们知道在C++中 模板可以很方便的代替任意类型的数据 如下 ; template<class T> void show(T x) { cout<<x<<endl ; } 上面的T 可以代表任意类型的数据 ,...

weixin_30924239的博客 134

C++ 与 Java 语言对比

1 . Java 是完全封装的,而 C++ 的函数是可以定义在 Class 的外部的。从这里就可以看出 C++ 的 OO 思想不够彻底,至少在封装这一点上。 2. C++ 中有拷贝构造函数,可以把一个对象的属性 copy 到另一个对象里 , 也叫对象赋值,而 Java 是用 Clone 实现的。 3. Java 的世界是 Object 世界(当然除了基本类型,这...

weixin_33720452的博客 138

JAVA面向对象

一、面向对象概述: 面向对象是一种程序设计范型,将类的属性和方法封装成对象,以对象为程序的基本的执行单元。1.3、重载方法 (overload ):方法名与其他方法的方法名相同,参数类型和个数不同的方法称为重载方法;1.4、构造方法:方法名与类名相同,没有返回值的方法,也称构造器 ,构造器的作用是创建对象;(2)无参构造方法:没有入参参数,虚拟机会默认创建无参构造器,不需要程序员去写,但程序员自己定义了构造器,默认的构造器就会失效。(1)有参构造方法:带有入参参数的构造器,创建对象时,赋值给对象。

qq_45781545的博客 266

第三章 面向对象范型

本文系统介绍了面向对象编程(OOP)的核心概念及其在软件工程中的应用。主要内容包括: 面向对象基础 辨析"范型"与"泛型"的概念差异 介绍类与对象、继承、多态等基本特性 强调封装与信息隐藏的重要性 软件设计原则 详细讲解内聚(7个层次)与耦合(5个层次)的度量标准 提出"高内聚、低耦合"的设计目标 分析数据封装与抽象数据类型的实现方法 UML建模语言 说明UML的发展历史和主要图表类型 介绍类图、时序图等常用建模工具 提供UML在软件开发各阶段的应

AI时代的DevOps 985

Tip - 小心:泛型方法重载非泛型方法

今天发现有段代码没有返回预计结果,该代码使用了另一个同事写好的一个类: public class ServiceResponse    {            public ServiceResponse(T _result){..}            public ServiceResponse(string _errorMessage){..}...}

个人沉淀 2324
上一篇: Java多态之前期静态绑定与后期动态绑定
下一篇: java 锁机制
angle_sun
博客等级 码龄12年 23粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值