私はQの列にTの配列をキャストした場合(QがTから導出されている)、それは順番に各要素をキャストしていますか?

ルイス・コロラド州:

私は、コードの次のスニペットを持っています:

Certificate[] a = myFavouriteKeystore.getCertificateChain();

しかし、私は、次のシグネチャを持つメソッドに渡す必要があります。

void setCertificateChain(X509Certificate[] chain);

私は、次の操作を行うことができ?:

setCertificateChain((X509certificate[]) a);

IDE(日食)は、それを受け入れて、私は、コンパイラもありませんが、私の推測では、私が買ってあげるということであると仮定しClassCastException、すべての配列要素がクラスであることも、ケース内にX509Certificateまたはそのサブクラス。

ユージン:

あなたはなりますClassCastException 、実行時に、はい、。

キャストは、あなたが言っていることを、コンパイラに横たわっているようなものです、本当にあなたを信頼することを指示している-あなたは何をしているか知っていると、コンパイラはキャストが動作することを証明できない場合でも。

あなたにコンパイラリッスン(すべてではない場合は、あなたがするので、例えば文字列を整数にキャストし、それを言うことができない、すなわち、String最終的なものとサブクラスを持つことができません)が、同時にに注入しますバイトコード checkcast命令を。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=136558&siteId=1