2017-05-08 72 views
0

鑄造nullVoid[]有什麼影響?我以前沒有見過它,我在閱讀LoaderThrottle示例here時偶然發現它。Casting null void array

mPopulatingTask.executeOnExecutor(
          AsyncTask.THREAD_POOL_EXECUTOR, (Void[])null); 

回答

1

除了@CommonsWare的答案想象以下場景:

public void doStuff(SomeType type) { 
    ... 
} 

public void doStuff(OtherType type) { 
    ... 
} 

你有兩種方法具有相同的簽名,只有參數的類型是不同的。

現在,如果您要撥打doStuff(null);,編譯器將無法知道應該在此處使用哪種方法,併爲您提供Ambiguous method call。用doStuff((OtherType)null);你可以消除歧義,編譯器很高興。

+0

謝謝@QBrute明白了。 – mallaudin

2

一般而言,如果存在多個可能類型的該第二參數,鑄造告訴哪個候選類型應被用於null編譯器。

在這個特定情況下,第二個參數應該是多餘的,因爲executeOnExecutor()需要一個Executor,然後是可變參數,零參數對於可變參數非常有效。