다음은 정적 유형 검사 및 동적 유형 검사에 대한 설명 인 Wikipedia에서 나온 것입니다.
• 정적 유형 확인 : 프로그램의 소스 코드를 기반으로 유형 안전을 확인하는 프로세스;
• 동적 유형 검사 : 프로그램 실행 중 유형 안전을 확인하는 프로세스;
Java는 정적 유형 확인을 사용하여 편집 중 프로그램을 분석하여 유형 오류가 없는지 확인합니다. 기본 아이디어는 런타임 중에 유형 오류가 발생하지 않는 것입니다.
다음 코드는 예를 들어 이해 한 후에 Java 정적 유형 확인이 어떻게 작동하는지 더 잘 이해할 수 있습니다.
코드 예제
다음 클래스 A와 B가 있다고 가정하고 B는 A를 상속받습니다.
클래스 A {a me () {return this;} public void doa () {system.out.println ( "do a");}} 클래스 B는 {public void dob () {system.out.println ( "do b");}}을 확장합니다. 먼저, New B (). me ()에 대한 전화는 무엇을 반환합니까? 개체 A 또는 B?
me () 메소드는 A 객체를 반환하도록 선언되므로 컴파일하는 동안 컴파일러는 A 객체를 반환한다는 것을 알고 있습니다. 그러나 B는 A의 메소드를 상속하고 자체적으로 반환하기 때문에 런타임 동안 B 객체를 반환합니다.
정적 유형 확인은 어떻게 작동합니까?
방법 dob ()가 b 객체에 의해 호출 되더라도 다음 코드 줄은 불법입니다. 문제는 기준 유형이 A라는 것입니다. 장치를 컴파일 할 때 컴파일러는 실제 유형을 알지 못하므로 유형 A로 취급합니다.
// 불법 B (). me (). dob ();
따라서 다음 코드 만 호출 할 수 있습니다.
// legalnew b (). me (). doa ();
그러나 다음과 같이 유형을 B에 시전 할 수 있습니다.
// 법적 ((b) new b (). me ()). dob ();
다음으로 C 클래스를 추가합니다.
클래스 C는 {public void dobad () {system.out.println ( "do c");}}을 확장합니다. 그런 다음 다음 코드 명령문은 정적 유형 확인을 전달합니다.
// legal ((c) new b (). me ()). bebad ();
컴파일러는 실제 유형을 알지 못하지만 유형 B를 유형 C로 변환 할 수 없기 때문에 런타임 중에 예외가 발생됩니다.
위의 내용은 편집자가 귀하에게 소개 한 Java에서 정적 유형 검사를 수행하는 방법에 대한 예제에 대한 자세한 설명입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!