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

用变量参数重载方法(变量)

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

用变量参数重载方法(变量)

此行为是由于与和之间没有这种比较相比,

int
它更具体。
double``int``boolean

如JLS
第15.12.2.5节(强调我的)中所述:

如果满足以下任一条件,则使用参数表达式e1,…,ek进行调用时,一个适用的方法m1 比另一适用的方法m2 更具体

  • m2不是通用的,并且 m1和m2可通过可变arity调用应用
    ,并且其中m1的前k个可变arity参数类型为S1,…,Sk,而m2的前k个可变arity参数类型为T1,…。 。,TK,
    该型Si比的Ti更加具体 为参数EI对于所有的i(1≤I≤K)。另外,如果m2具有k + 1个参数,则m1的第k +
    1个可变稀疏参数类型是m2的第k + 1个可变稀疏参数类型的子类型。


什么 更具体的
,其实就是在后文中定义的子类型:

如果S <:T,则对于任何表达式,类型S比类型T更具体。

这意味着,

S
是更具体的比
T
S
是的子类型
T
。对于基本类型,这归结为以下属性:

  • 双>浮动
  • 浮动>长
  • 长>整数
  • 整数>字符
  • int>短
  • 短>字节

注意那

boolean
不存在。

因此,

public static void main(String[] args) {    movie();}static void movie(int... x) { }static void movie(short... x) { }static void movie(double... x) { }static void movie(byte... x) { }

编译并

movie(byte... x)
会被调用,因为它是最具体的。

然而,

public static void main(String[] args) {    movie();}static void movie(int... x) { }static void movie(boolean... x) { }

无法编译,因为

boolean
无法与进行比较
int



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

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

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