>Java >java지도 시간 >Java 8 이전에는 Java 인터페이스에 정적 메서드가 없는 이유는 무엇입니까?

Java 8 이전에는 Java 인터페이스에 정적 메서드가 없는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-14 08:37:10795검색

Why Couldn't Java Interfaces Have Static Methods Before Java 8?

Java 인터페이스가 정적 메서드를 허용하지 않는 이유

Java 8 업그레이드

Java 8부터 인터페이스는 이제 정적 메서드를 지원합니다. 또한 구체적인 인스턴스 메서드는 가질 수 있지만 인스턴스 필드는 있을 수 없습니다.

역사 및 기술적 이유

이전 Java 버전에서는 다음과 같은 이유로 인터페이스에 정적 메서드가 포함될 수 없었습니다.

  • 기술적 타당성: 처음에는 사소한 언어 변경으로 간주되었지만 Java 인터페이스에 정적 메서드를 추가하자는 제안 7 예상치 못한 문제가 발생했습니다.
  • 중복성: 정적 메서드를 호출하려면 컴파일 시 정적으로 알려진 클래스가 필요하기 때문에 인터페이스의 정적 메서드는 그다지 필요하지 않았습니다.

정적 메서드와 재정의

정적 메서드는 다음에서 해결되므로 재정의할 수 없습니다. 컴파일 시간. 동적 디스패치는 컴파일러가 객체의 구체적인 유형을 결정할 수 없어 호출할 메서드를 확인할 수 없는 경우 인스턴스 메서드에 사용됩니다. 그러나 정적 메서드에는 알려진 클래스가 필요하므로 정적으로 해결될 수 있으므로 동적 디스패치가 필요하지 않습니다.

즉, 슈퍼클래스와 하위 클래스 모두 동일한 서명을 가진 정적 메서드가 있는 경우 하위 클래스의 메서드는 항상 먼저 호출되어 슈퍼클래스의 메서드를 재정의합니다. 그러나 이는 원하는 버전의 정적 메서드가 포함된 클래스를 항상 지정할 수 있기 때문에 개념적으로 중복됩니다.

생성자 "인터페이스"

IXML화 가능, 다음 사항을 고려하십시오.

  • 구체적인 유형의 명시적인 이름 지정을 통해 생성자를 확인할 수 있습니다.
  • IXMLized는 예상되는 인터페이스 동작을 정의하며 추가 구성 요구 사항은 구현 세부 사항입니다.
  • 인터페이스를 사용하는 코드에는 생성자에 대한 지식이 필요하지 않지만 생성자가 필요한 코드는 어쨌든 구체적인 유형을 알아야 합니다.

위 내용은 Java 8 이전에는 Java 인터페이스에 정적 메서드가 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.