我有下一个代码片段:
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或子类,我将得到一个偶数。
您将ClassCastException 在运行时得到,是的。
强制转换就像对编译器撒谎,说您确实知道自己在做什么,即使编译器无法证明强制转换将起作用,您也正在指示它信任您。
编译器会侦听您的声音(并非在所有情况下都可以,例如,您不能告诉它将String强制转换为Integer,因为它String是最终的,并且不能具有子类),但同时会注入到字节码 checkcast指令。
| 归档时间: |
|
| 查看次数: |
394 次 |
| 最近记录: |