java 다운캐스팅 예제

  • このエントリーをはてなブックマークに追加

null 값이 있는 변수를 사용 하 고 인스턴스 of 연산자 적용 하는 경우 false 반환 합니다. null 값이있는 변수로 인스턴스 of 연산자를 적용하는 아래 예제를 살펴보겠습니다. 우리는 종종 개체가 특정 유형에 속하는지 확인하기 위해 다운 캐스팅하기 전에 인스턴스 연산자사용합니다: 위의 예제에서는 Cat의 실제로 인스턴스인 객체만 다운캐스트하려고 합니다. 이렇게 하려면 연산자 인스턴스를 사용합니다. 예, 다운 캐스팅은 Java에서 허용됩니다 – 위의 코드가 아니라면 런타임뿐만 아니라 컴파일 타임에 항상 오류를 반환합니다. 그래서, 당신은 정확히 다운 캐스트를 수행하는 것이 합리적 일 때 궁금할 수 있습니다 – 그리고 그것은 아주 좋은 질문입니다. 다운캐스팅은 한 개체를 다른 오브젝트와 비교해야 할 때 매우 유용합니다. 예를 들어 아래 코드를 살펴보는 데 도움이 됩니다. myObject를 문자열로 다운 캐스팅 (`(String)myObject`)는 myObject가 문자열 형식인 경우가 있기 때문에 컴파일 타임에 불가능했기 때문에 런타임에전달된 매개 변수가 논리적인지 여부를 알아낼 수 있습니다.

myObject를 유니버설 java.lang.Object.toString(사용 하 여 컴파일 타임 문자열로 변환할 수 있지만 도움이 되지 않거나 안전하지 않은 경우 toString()의 기본 구현을 호출하는 위험이 있으며 예외 처리는 이를 방지할 수 없습니다. 다운캐스팅은 Parent 변수에서 참조하는 값의 형식을 알고 있고 값을 매개 변수로 전달할 때 자주 사용되는 경우에 유용합니다. 아래 예제에서 메서드 objectToString 형식 문자열로 가정 되는 개체 매개 변수를 사용 합니다. Animal 형식의 변수를 사용하여 Cat 클래스에서만 사용할 수 있는 메서드를 호출하려면 어떻게 해야 합니까? 여기에 다운 캐스팅이 온다. 슈퍼 클래스에서 하위 클래스로 캐스팅하는 것입니다. 위의 예제에서 변환 후 myInt 변수는 1이며 이전 값 1.1을 복원할 수 없습니다. 형식 캐스팅을 통해 다운캐스팅을 수행하는 경우 ClassCastException은 런타임에 throw됩니다. getClass() 메서드를 사용하면 전달되는 개체의 클래스를 현재 클래스의 클래스와 비교할 수 있습니다. 그들이 동일하지 않은 경우 우리는 그들을 비교 귀찮게하지 않습니다, 우리는 다운 캐스팅이 무의미 할 것을 알고있다. 인스턴스of 연산자가 다운캐스팅이 가능한 경우 예제를 살펴보겠습니다. 심하게 고려된 디자인의 일반적인 예는 Java 제네릭이 도입되기 전에 Java 컨테이너와 같은 상위 형식의 컨테이너이며, 다시 사용할 수 있도록 포함된 개체를 다운캐스팅해야 합니다.

OCaml과 같은 일부 언어는 다운캐스팅을 완전히 허용하지 않습니다. [1] 그런데 각 개체는 적어도 객체이기 때문에 모든 Java 개체는 다형성입니다. Animal 인스턴스를 Object 형식의 참조 변수에 할당할 수 있으며 컴파일러는 불평하지 않습니다: 하위 클래스 형식이 부모 클래스의 개체를 참조할 때 다운캐스팅이라고 합니다. 직접 수행하는 경우 컴파일러는 컴파일레이션 오류를 제공합니다. 형식 캐스팅을 수행 하면 ClassCastException 런타임에 throw 됩니다. 그러나 인스턴스오퍼레이터를 사용하면 다운캐스팅이 가능합니다. 위의 예에서 eat() 메서드는 재정의됩니다. 이것은 eat() 동물 유형의 변수에 호출되지만, 작업은 실제 개체에 호출 된 방법에 의해 수행된다는 것을 의미합니다 – 고양이와 개 : 그것은 먼저 다운 캐스트가 무엇인지 정확하게 정의하는 데 도움이됩니다. 실제로 는 매우 간단합니다 – 기본 클래스와 해당 기본 클래스에서 직접 또는 간접적으로 파생되는 클래스가 있다고 가정합니다. 그런 다음 해당 기본 클래스 형식의 개체가 파생 된 클래스 유형으로 캐스팅 될 때마다 다운 캐스트라고합니다. 다운캐스트라고 하는 이유는 상속 다이어그램이 일반적으로 작성되기 때문에 기본 클래스가 맨 위에 있고 파생 클래스가 기본 클래스 아래에 있기 때문입니다.

  • このエントリーをはてなブックマークに追加