如果我将T的数组强制转换为Q的数组(Q是从T派生的),是否依次转换了每个元素?

Lui*_*ado 9 java

我有下一个代码片段:

Certificate[] a = myFavouriteKeystore.getCertificateChain();
Run Code Online (Sandbox Code Playgroud)

但我需要将其传递给具有以下签名的方法:

void setCertificateChain(X509Certificate[] chain);
Run Code Online (Sandbox Code Playgroud)

我可以执行以下操作吗:

setCertificateChain((X509certificate[]) a);
Run Code Online (Sandbox Code Playgroud)

IDE(eclipse)接受它,并且我假设编译器也接受它,但是我猜想,ClassCastException如果所有数组元素都是它的类X509Certificate或子类,我将得到一个偶数。

Eug*_*ene 7

您将ClassCastException 在运行时得到,是的。

强制转换就像对编译器撒谎,说您确实知道自己在做什么,即使编译器无法证明强制转换将起作用,您也正在指示它信任您。

编译器会侦听您的声音(并非在所有情况下都可以,例如,您不能告诉它将String强制转换为Integer,因为它String是最终的,并且不能具有子类),但同时会注入到字节码 checkcast指令。