栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

与Java方法调用中的类型参数有关的问题

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

与Java方法调用中的类型参数有关的问题

以下是该 方法 的方法调用的:

JLS
15.12
列出了以下方法调用方法:

  • MethodName ( [ArgumentList] )
    (注意:这没有类型参数)
  • TypeName.[TypeArguments] Identifier ( [ArgumentList] )
  • expressionName.[TypeArguments] Identifier ( [ArgumentList] )
  • Primary.[TypeArguments] Identifier ( [ArgumentList] )
  • super.[TypeArguments] Identifier ( [ArgumentList] )
  • TypeName.super.[TypeArguments] Identifier ( [ArgumentList] )


因此,在Java语言规范中,具有表达式或类型名称的方法可以具有类型实参,但请注意,在第一个方法调用中,您不能指定类型实参,因为它是非法的。

请注意,这不仅

this
不允许这样做,而且
static
调用和
super
方法调用也可以具有类型参数,并且这些参数是完全合法的。

static void m() { }void test() {   ClassName.<Integer>m();//Also compiles}

除此之外,您还会收到以下警告,

非泛型方法m()的未使用类型参数

代表以下JLS
15.12.2.1的声明,

此子句暗示非通用方法可能

potentially
适用于提供显式类型参数的调用。确实,这可能是适用的。在这种情况下,类型参数将被简单地 _忽略_ 。

它说 确实,它 可能 是适用的(在运行时)

此外,

该规则源于 兼容性和可替代性原则。 由于接口或超类的生成可以独立于其子类型,因此 我们可以用非泛型方法覆盖泛型方法。
但是,重写(非泛型)方法必须适用于对泛型方法的调用,包括显式传递类型实参的调用。
否则,该亚型将无法替代其生成的超型。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438346.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号