我有一個函數可能不會傳遞任何東西,或者將一個null傳遞給F(params String [] values)?
public List<Item> Filter(params String[] valuesOrdered)
{
//...
}
其充當關於所有Item
秒的過濾器。
public class Item
{
List<String> propertiesOrdered;
//...
}
因此,如果我打電話給Filter("prop1")
,然後全部Item
s與"prop1"
作爲他們的屬性將被匹配的第一個條目。
如果我打電話Filter()
,則應返回所有Item
。
我還需要能夠匹配null
值。因此,現在我可以撥打Filter(null, null)
和所有Item
與null, null
作爲他們的第一個屬性將匹配。
所有這些工作,除非我打電話Filter(null)
。它的解釋方式與Filter()
相同,但意圖是前者應返回所有Item
s,null
作爲其第一個屬性,後者應歸還所有Item
s。
我試圖定義過載處理這個
public List<Item> Filter(String value)
{
if(value == null)
return Filter(new String[] {null});
else
return Filter(value);
}
但是,編譯器只顯示一個Ambiguous Invocation
錯誤,當我打電話Filter(null)
。
請注意,即使您的超載原來沒有幫助,它應該讀取'公開列表- Filter(String value){return Filter(new [] {value}); }'。這很簡單,並始終調用原始超載(以正確的方式),而在'value'非空的情況下,您自己調用了遞歸式無限期。 (請注意'Filter(value)'不是不明確的。) –
@JeppeStigNielsen啊是的。好東西,它不是因爲其他呼叫而在第一個地方建立的:) –