首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java中m1和m2泛型方法的区别

在Java中,m1和m2都是泛型方法,但它们有一些区别。

  1. m1是一个普通的泛型方法,而m2是一个泛型方法的重载方法。m1可以在任何地方调用,而m2只能在m1中调用。
  2. m1的泛型参数是在方法签名中声明的,而m2的泛型参数是在方法体中声明的。
  3. m1的泛型参数可以是任何类型,而m2的泛型参数必须是m1的泛型参数的子类型。
  4. m1的返回类型可以是泛型参数类型,也可以是与泛型参数相关的类型,而m2的返回类型必须与泛型参数相关。
  5. m1可以在调用时指定泛型参数的具体类型,而m2的泛型参数类型是由m1的泛型参数类型推断得出的。

总结起来,m1是一个独立的泛型方法,可以在任何地方调用,而m2是m1的重载方法,只能在m1中调用。m1的泛型参数是在方法签名中声明的,可以是任何类型,而m2的泛型参数是在方法体中声明的,必须是m1的泛型参数的子类型。此外,m1的返回类型可以是泛型参数类型或与泛型参数相关的类型,而m2的返回类型必须与泛型参数相关。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

擦除是什么意思_方法区别

大家好,又见面了,我是你们朋友全栈君 在严格代码里,带声明类总应该带着类型参数。但为了与老Java代码保持一致,也允许在使用带声明类时不指定实际类型。...如果没有为这个类指定实际类型,此时被称作raw type(原始类型),默认是声明该形参时指定第一个上限类型。...当把一个具有信息对象赋给另一个没有信息变量时,所有在尖括号之间类型信息都将被扔掉。...比如一个 List 类型被转换为List,则该List对集合元素类型检查变成了参数上限(即Object)。...对而言,可以直接把一个List对象赋给一个 List 对象,编译器仅仅提示“未经检查转换”。

1.3K30

JavaObject、T()、?区别

《Thinking in Java说很多原因促成了出现,最引人注目的一个原因就是为了创造容器类。这个要怎么来理解呢?...所以我们现在能小结一下ObjectT很重要两点区别就是: Object范围非常广,而T从一开始就会限定这个类型(包括它可以限定类型为Object)。...(之所以要强调在写代码时是因为在虚拟机中会被JVM擦除掉它具体类型信息,这点可参考,在这里不做引申)。 比如在jdkList类是个类。...这点给我们带来启示是,在编写类似List类时候,一定要注意是否用。一定要多写几个类,多讨论多理解,不然还是可能会搅在一起。 接着是?...区别。多写几行代码,多做试验,多讨论,就知道在何时何地恰当使用了。

2K100
  • Java进阶:【】认识方法类,接口通配符

    对应类型都是引用类型不能是基本类型 接口 声明类时传入类型实参 创建类对象时,传入类型实参 类型实参为空时,默认为Object类型 继承类: 1.父类不传入类型实参...,默认为Object类型 2.父类传入类型实参,子类既可以是类,也可以不是 3.父类传入类型实参,则子类必须是类,且子类类型形参列表必须包含父类类型形参列表 定义实例化...构造器写法: 不同引用类型不可以互相赋值 如果不指定,就会被擦除,例子就是 静态方法不能使用类 不能直接使用数组创建,如果非要创建 方法 什么是方法...,不是带方法就是方法方法有要求:这个方法参数类型要和当前类方法无关 换个角度:方法对应那个参数类型当前所在这个类,是否为类,是啥,无关 方法定义时候...,前面要加上t,原因如果不加的话,会把t当作一种数据类型,然而代码没有t类型那么就会报错 t类型实在调用方法时候确定 方法是否是静态方法

    3.4K10

    Java

    extends Object> 相信很多人和我一样,接触Java多年,却仍旧搞不清楚 Java   相似不同。...但是,这应该是一个比较高端大气上档次Question, 在我们进行深入探讨之前,有必要对Java有一个基础了解。如果还不了解,请看上一篇文章!...产生背景 在 JDK5 引入了来消除编译时错误和加强类型安全性。这种额外类型安全性消除了某些用例强制转换,并使程序员能够编写算法,这两种方法都可以生成更具可读性代码。...通配符 问号或通配符在中用来表示未知类型。它可以有三种形式: 无界通配符:List 表示未知类型列表 上界通配符:List 在这个例子是同一个意思。 虽然在大多数情况下,这是正确,但也有一些区别。接下来我们就来看看它们之间差异。 4. <?

    70830

    Java 简介 ( 类 | 方法 | 静态方法 | 类与方法完整示例 )

    ; java 与 C++ 模板 : Java , 是仿照 C++ 模板 开发 , 目的是让开发者可以写出 通用 , 灵活 代码 ; 伪 : Java , 是 伪..., Java 开发好之后 , 在 编译阶段 就 将相关信息消除 了 , 不会留到运行时 ; 类型 : 方法 : 方法有参数 , 方法参数 可以指定成一些 ; 类 :...性能 ; 二、类 ---- 类 : 在 类名后面 使用 声明 , 则在该类 , 可以使用该类型 T 类型 ; 特别注意 , 该类 如下 2 个方法 不是 方法...; 方法 : 不同 : 方法指定 T 与 类 T 没有任何关系 , 这两个 T 可以是不同类型 ; 相同 : 方法定义 T...---- 静态方法 : 如果静态方法 使用了 类 T , 作为参数 或 返回值 , 这种使用时错误 ; 如果必须在 静态方法 中使用 T , 则该 T 必须是静态方法 ,

    13.8K30

    Java声明方法

    参考链接: 我们需要Java前向声明吗? 是什么意思在这就不多说了,而Java定义也比较简单,例如:public class Test{}。...但是Java方法就比较复杂了。          类,是在实例化类时候指明具体类型;方法,是在调用方法时候指明具体类型。         ...定义方法语法格式如下:          调用方法语法格式如下:          说明一下,定义方法时,必须在返回值前边加一个,来声明这是一个方法,持有一个T,然后才可以用...其中,forName()方法参数是何种类型,返回Class就是何种类型。...在本例,forName()方法传入是User类完整路径,因此返回是Class类型对象,因此调用方法时,变量c类型就是Class,因此方法T就被指明为

    1.2K10

    Java详解:Class使用。类,方法详细使用实例

    参考链接: Javamain()函数是强制性吗 一、引入  1、是什么  首先告诉大家ArrayList就是。那ArrayList能完成哪些想不到功能呢?...当然,这就是。 下面我们将对写法用法做一一讲解。...:类 在方法,我们在类中直接把Info接口给填充好了,但我们类,是可以构造成,那我们利用类来构造填充接口会是怎样呢?     ...StaticMethod("adfdsa");//使用方法二    从结果我们可以看到,这两种方法结果是完全一样,但他们还有些区别的,区别如下: 方法一,可以像普通方法一样,直接传值...进阶:返回值存在 上面我们函数,返回值都是void,但现实不可能都是void,有时,我们需要将变量返回,比如下面这个函数:    [java]     view plain     copy

    3.3K50

    JAVA

    java,定义非常简单,但是方法就比较复杂了。...尤其是我们见到大多数成员方法也都使用了,有的甚至也包含着方法,这样在初学者中非常容易将方法理解错了。...//这只是类中一个普通成员方法,只不过他返回值是在声明类已经声明过。 //所以在这个方法才可以继续使用 T 这个。...//由于方法在声明时候会声明,因此即使在并未声明,编译器也能够正确识别方法识别的。...> coll){} } 3.3、受限 之前设置时候,实际上是可以任意设置,只要是类就可以设置。但是在JAVA可以指定一个上限下限。 上限: 格式: 类型名称 <?

    1.4K10

    Java介绍使用

    今天主要给大家说下Java使用以及是什么?...一句话概述就是:可以在类或方法预支地使用未知类型 那么使用有什么好处呢?...,那就是通配符 当使用类或者接口时,传递数据类型不确定,可以通过通配符<?...但是一旦使用通配符后,只能使用Object类共性方法,集合中元素自身方法无法使用。 通配符基本使用 有如下几点 通配符:不知道使用什么类型来接收时候,此时可以使用?,?...> collection){ } } 通配符高级使用 之前设置时候,实际上是可以任意设置,只要是类就可以设置。但是在JAVA可以指定一个上限下限。

    83020

    Java

    个人通俗一点理解:在Java当我们定义了一个时候,这个可以被定义为任何类型,因为在java当定义了之后,在进行类编译时候会将改变为代码赋予对象类型(类型擦除)。...总不能为了定义一个新方法来处理Generic类型类,这显然与java多台理念相违背。因此我们需要一个在逻辑上可以表示同时是GenericGeneric父类引用类型。...;当操作类型时,不需要使用类型具体功能时,只使用Object类功能。那么可以用 ? 通配符来表未知类型。 4.6 方法java,定义非常简单,但是方法就比较复杂了。...当然这并不是方法全部,方法可以出现杂任何地方任何场景中使用。...会在类加载时候进行擦出操作,将转换为对应类型。(C++最大区别类型参数只能是类类型(也就是引用类型)。

    1.1K20

    Java细节

    如果没有 学习Java,必不可少一个过程就是需要掌握起源于JDK1.5,为什么我们要使用呢?...主要运用在譬如Java容器API等需要对多个对象进行管理部分。 早期(不支持时期)Java代码,我们在使用容器时候,需要在类型转换前手动进行类型转换验证工作来防止异常。...f(new Apple()) // 由于类型推到,当我们传入一个Apple对象时候,Java会为我们自动推导其类型,所以可以省略: obj.f(new Apple()); 但是请注意,在一个再定义方法...> 一二 其实非常类似,都表示一种不确定性,都是告诉编译器,我现在有一个,但是这个东西具体类型我不确定到底是什么。但是,它们还是有一定区别的。首先说一个最基础,genF(midList); 他其实等同于上面的3方法,因为就是直接将对应替换为具体类。那么genF方法与genG方法究竟有什么区别呢?答案就是PECS原则。

    24320

    Java详解

    文章目录 概述 使用好处 定义与使用 定义使用含有类 含有方法 含有接口 ‍♂️通配符 ⛷️通配符基本使用 ‍♂️通配符高级使用----受限 概述...:可以在类或方法预支地使用未知类型。 tips:一般在创建对象时,将未知类型确定具体类型。当没有指定时,默认类型为Object类型。 使用好处 那么带来了哪些好处呢?...定义使用含有类 定义格式: 修饰符 class 类名 { } 例如,APIArrayList集合: class ArrayList{ public boolean...但是一旦使用通配符后,只能使用Object类共性方法,集合中元素自身方法无法使用。 ⛷️通配符基本使用 通配符:不知道使用什么类型来接收时候,此时可以使用?,?表示未知通配符。...但是在JAVA可以指定一个上限下限。 上限: 格式: 类型名称 对象名称 意义: 只能接收该类型及其子类 下限: 格式: 类型名称 <?

    80420

    java(一)、基本介绍使用

    这种参数类型可以用在类、接口方法创建中,分别称为类、接口方法。  ...技术在C#Java之中使用方式看似相同,但实现上却有着根本性分歧,C#里面泛无论在程序源码、编译后IL(Intermediate Language,中间语言,这时候是一个占位符)或是运行期...所以说技术实际上是Java语言一颗语法糖,Java语言中实现方法称为类型擦除,基于这种方法实现被称为伪。...念为typeof   Integer ArrayList称为原始类型 二、使用 参数类型可以用在类、接口方法创建中,分别称为类...、接口方法

    1.5K10

    Java(很细)

    引言 在Java编程世界(Generics)是一个革命性特性,它彻底改变了我们编写组织代码方式。...案例2:Spring框架应用 应用场景:Spring框架使用来提供更灵活类型安全依赖注入。 实施方法: 在RepositoryService接口中使用。...性能分析与基准测试 在实际开发,性能是一个重要考量因素。以下是关于Java性能详细分析基准测试数据。...性能测试数据 为了分析Java性能,我们设计了以下基准测试: 性能测试: 测试不同类型创建和方法调用性能。 方法性能测试: 测试方法调用执行性能。...Q: 如何处理异常? A: 在方法抛出异常时,可以使用通用异常类型或在方法签名声明可能抛出异常。

    9510

    java通配符 ? extends T ? super T 区别用法

    1.二者意思 ? extends T :表示上界是T, ? 都是继承自T,都是T子类; ? super T :表示下界是T,?...都是T父类; 2.用法 例1,我们有多个对象,其中Cat,Dog,Chicken都是extends Animal。 List<?...extends Animal list是无法得知这个list究竟可能是上面的哪一种,所以,list是无法 使用add方法,但是我们可以读取到Anumal类型数据。...3.总结 第一、 频繁往外读取内容,适合用 ? extends T; 第二、 经常往里插入,适合用 ?...super T; (阿里JAVA开发手册强制这样使用,见集合处理第6条) 这个用法典型用法可以在java集合类Collections源码中找到: public static void

    1.8K20

    java通配符 ? extends T ? super T 区别用法

    https://www.cnblogs.com/chyu/p/4630798.html 关于Java,这里我不想总结它是什么,这个百度一下一大堆解释,各种java书籍也有明确定义,只要稍微看一下就能很快清楚....从英文名字Generic type也能看出,Generic普通、一般、通用,是一个概括性词,那么从名字上也就好理解了,它是一种通用类型,是java各种类型概括. ?...是java通配符,它代表java某一个类,那么就代表类型T某个子类,就代表类型T某个父类....那么 代表是左侧小红苹果,红苹果苹果某个类,而代表就是苹果水果,好吃,吃某个类. 这里要注意是或是代表是范围内某个特定类,而不是范围内所有类....Java技术干货,包括面试攻略,开发技巧,架构设计,职场心得等。

    1.1K20

    Java基础】Java使用

    因为我们知道Object是所有类父类,也就是说所有类都继承了Object。所以在之前是将参数类型定义为Object,通过强制类型转换也能达到我们目的。...在使用类型参数后,编译器就可以检测提供数据类型是否错误,使程序具有更好可读性安全性。...3 定义 定义需要在类名或接口名后指定,格式如: public class Test{} 这里大写英文字母并不是必须是E,但在开发规约一般使用E、K、V、T来定义...4 使用 定义了后,可在类中代码即可使用该字母作为数据类型来定义变量。...没错,Java很多地方都大规模使用了,接触最多就是集合框架,如: List list=new ArrayList(); 这是我们在初始化一个ArrayList实例对象,

    54720
    领券