2016-03-08 59 views
0

我有返回的Function<T,V>創建的功能接口

public <T, V> Function<T, V>[] foo() { 
    ... 
    return (Function<T, V>[]) new Object[0];    
    ... 
} 

空數組的方法,但我趕java.lang.ClassCastException在運行時空數組。 是否有可能返回一個空的函數接口數組?

+2

主要問題是:你爲什麼需要它? – AdamSkywalker

+0

@AdamSkywalker想象一下,我有一種方法可以接受'函數 ...函數'。現在我需要一個接受'R ... objects'的方法。因此,我決定將對象中的每個對象(r)轉換爲lambda'x - > r',並將它們傳遞給現有的方法 – AleY

回答

2

你可以做的最接近的事是

return (Function<T, V>[]) new Function[0]; 

這有什麼好做的功能接口,以及一切與數組和仿製藥不是很好互動。

+0

謝謝。它有助於。 – AleY

0

您不能將Object []轉換爲另一種類型,僅僅因爲它不是那種類型。即使數組大小爲0,這也適用。

爲什麼不簡單地返回一個0函數的數組?

return new Function[0]; 

這可能會給出一個「未投」的警告,但它仍然可以工作,因爲有在運行時類型Function[]和參數化類型Function<T, V>[]由於類型擦除之間沒有什麼區別。在這種情況下,您可以安全地使用@SuppressWarnings("unchecked")

+0

這甚至不會編譯 – AdamSkywalker

+0

@AdamSkywalker謝謝指出。我糾正了它。 –

+0

謝謝。它有助於。 – AleY