"그리고 이제 Diego의 짧은 교훈입니다. 간략하고 요점입니다. 참조 유형 변환에 대해."
"개체 변수부터 시작하겠습니다. 이러한 변수에 모든 참조 유형을 할당할 수 있습니다( 확대 변환 ). 그러나 다른 방향으로 할당( 축소 변환 )하려면 캐스트 작업을 명시적으로 지정해야 합니다."
암호 | 설명 |
---|---|
|
일반적인 확장 참조 변환 |
|
일반적인 축소 참조 변환 |
|
확대 변환. |
|
런타임 에러! 정수 참조를 문자열 참조로 캐스팅할 수 없습니다. |
|
런타임 에러! Integer 참조를 Float 참조로 캐스팅할 수 없습니다. |
|
동일한 유형으로 변환. 축소 참조 변환입니다. |
" 넓히거나 좁히는 참조 변환은 어떤 식으로든 개체를 변경하지 않습니다. 좁히기(또는 넓히기) 부분은 특히 할당 작업에 변수 및 해당 새 값의 유형 검사가 포함(포함되지 않음)한다는 사실을 나타냅니다. "
"이것은 모든 것이 명확한 드문 예입니다."
" 이러한 예제의 오류를 방지하기 위해 Object 변수가 참조하는 유형을 찾을 수 있는 방법이 있습니다 . "
암호
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