【发布时间】:2019-06-04 15:48:06
【问题描述】:
给定这两个构造函数:
SomeClass(int... params)
{
// Do things
}
SomeClass(long... otherParams)
{
// Do other things
}
当对象 foo 被实例化时会发生什么?
SomeClass foo = new SomeClass();
是否以某种方式调用了未定义的默认构造函数?还是调用了具有空数组的那些构造函数之一?如果有,有什么先例?
我做了一些基本的测试,发现如果定义了一个没有参数的构造函数,那么它将被调用。否则,它似乎调用了一个模棱两可的。
【问题讨论】:
-
只有完全没有显式构造函数的类才能获得默认构造函数。您的类没有默认构造函数。
-
@Andreas 通过进一步的测试(使用原始类型),似乎调用了具有最低字节大小的类型。不过,这纯粹是推测性的,我想要一个明确的答案。
-
“通过进一步的测试(使用原始类型),似乎调用了具有最低字节大小的类型。” - 添加下面的构造函数,你会发现它不会编译:
SomeClass(boolean... moreParams)
标签: java class constructor variable-length-array