【发布时间】:2017-11-02 17:36:37
【问题描述】:
我重构了我的一个类。它应该是可序列化的。它有一个方法 foo,其参数类型为 object varargs。
它可能看起来像:
public class MyClass {
public void foo(Object ... param) {
// do sth
}
}
重构之后:
public class MyClass implements Serializable {
public void foo(Serializable ... param) {
// do sth
}
}
现在,还有另一个方法调用 foo 并传递它的对象可变参数。
public void bar(Object ... param) {
foo(param);
}
此时,我预计将 Object[] 传递给 Serializable[] 时会出错。事实上,如果它是可变参数上的数组,我会的。
但它会将对象可变参数包装到可序列化的数组中。 foo 接收一个具有 1 个元素的可序列化数组,即带有传递的可变参数的对象数组。
为什么会这样? 如何强制这种错误用法在编译时实际抛出错误?
(我在 Java 1.8 中使用 eclipse neon
【问题讨论】:
标签: java arrays parameters variadic-functions