「それでは、Diego からの短いレッスンです。簡潔かつ要点です。参照型の変換についてです。」
「オブジェクト変数から始めましょう。このような変数には任意の参照型を割り当てることができます (拡張変換)。ただし、逆方向の割り当て (縮小変換) を行うには、明示的にキャスト操作を指定する必要があります。」
コード | 説明 |
---|---|
|
典型的な 拡大基準変換 |
|
典型的なナローリファレンス変換 |
|
拡大変換。 |
|
ランタイムエラー! 整数参照を文字列参照にキャストすることはできません。 |
|
ランタイムエラー! Integer 参照を Float 参照にキャストすることはできません。 |
|
同じ型に変換します。縮小参照変換。 |
"参照変換の拡大または縮小は、オブジェクトをまったく変更しません。縮小 (または拡大) 部分は、代入操作に変数とその新しい値の型チェックが含まれる (含まれない) という事実を具体的に指します。 」
「これはすべてが明らかな珍しい例です。」
"これらの例のエラーを回避するために、 オブジェクト変数によってどの型が参照されているかを確認する方法があります。 "
コード
int i = 5;
float f = 444.23f;
String s = "17";
Object o = f; // o stores a Float
if (o instanceof Integer)
{
Integer i2 = (Integer) o;
}
else if (o instanceof Float)
{
Float f2 = (Float) o; // This if block will be executed
}
else if (o instanceof String)
{
String s2 = (String) o;
}
「オブジェクトのタイプを 100% 確信している場合を除き、すべての拡張変換の前にこのチェックを実行する必要があります。」
"とった。"
GO TO FULL VERSION