创建一个空的函数接口数组
Creating an empty array of functional interfaces
我有一个方法 return 是一个 Function<T,V>
的空数组
public <T, V> Function<T, V>[] foo() {
...
return (Function<T, V>[]) new Object[0];
...
}
但我在运行时捕捉到 java.lang.ClassCastException
。
是否可以return一个空的功能接口数组?
您不能将 Object[] 转换为另一种类型,因为它不是那种类型。即使数组大小为 0,这也适用。
你为什么不直接 return 一个包含 0 个函数的数组?
return new Function[0];
这可能会给出 "unchecked cast" 警告,但它仍然有效,因为类型 Function[]
和参数化类型 Function<T, V>[]
在运行时由于类型擦除而没有区别。在这种情况下,您可以安全地使用 @SuppressWarnings("unchecked")
.
你能做的最接近的事情是
return (Function<T, V>[]) new Function[0];
这与功能接口无关,而与数组和泛型交互不佳有关。
我有一个方法 return 是一个 Function<T,V>
public <T, V> Function<T, V>[] foo() {
...
return (Function<T, V>[]) new Object[0];
...
}
但我在运行时捕捉到 java.lang.ClassCastException
。
是否可以return一个空的功能接口数组?
您不能将 Object[] 转换为另一种类型,因为它不是那种类型。即使数组大小为 0,这也适用。
你为什么不直接 return 一个包含 0 个函数的数组?
return new Function[0];
这可能会给出 "unchecked cast" 警告,但它仍然有效,因为类型 Function[]
和参数化类型 Function<T, V>[]
在运行时由于类型擦除而没有区别。在这种情况下,您可以安全地使用 @SuppressWarnings("unchecked")
.
你能做的最接近的事情是
return (Function<T, V>[]) new Function[0];
这与功能接口无关,而与数组和泛型交互不佳有关。