我有一个方法返回一个空数组Function<T,V>
public <T, V> Function<T, V>[] foo() {
...
return (Function<T, V>[]) new Object[0];
...
}
但我在运行时赶上java.lang.ClassCastException
。是否可以返回一个空的功能接口数组?
我有一个方法返回一个空数组Function<T,V>
public <T, V> Function<T, V>[] foo() {
...
return (Function<T, V>[]) new Object[0];
...
}
但我在运行时赶上java.lang.ClassCastException
。是否可以返回一个空的功能接口数组?
你能做的最接近的事情是
return (Function<T, V>[]) new Function[0];
这与函数式接口无关,与数组和泛型交互不好有关。
您不能将 Object[] 转换为另一种类型,仅仅因为它不是那种类型。即使数组大小为 0,这也适用。
为什么不简单地返回一个包含 0 个函数的数组?
return new Function[0];
Function[]
这可能会给出“未经检查的强制转换”警告,但它仍然可以工作,因为类型和参数化类型在运行时Function<T, V>[]
由于类型擦除而没有区别。在这种情况下,您可以安全地使用@SuppressWarnings("unchecked")
.