Java 8 이상에서 정적 메서드는 다음과 같습니다. 인터페이스에서 허용됩니다. 이전 버전에서는 그렇지 않았기 때문에 많은 프로그래머들이 그 이유를 궁금해했습니다.
Java 8에서는 재정의와 함께 정적 인터페이스 메서드를 도입했습니다. -기본 구현이 가능한 인스턴스 메소드. 이제 인터페이스에 정적 메서드가 포함될 수 있지만 여전히 인스턴스 필드는 포함될 수 없습니다.
정적 메서드는 컴파일 타임에 확인되므로 재정의할 수 없습니다. . 이는 컴파일러가 객체 인스턴스를 참조하지 않고도 호출할 정확한 클래스와 메서드를 결정할 수 있음을 의미합니다. 컴파일러가 런타임에 객체의 정확한 유형을 결정할 수 없기 때문에 인스턴스 메소드에 대한 동적 디스패치가 필요합니다.
인스턴스 메소드와 달리 정적 메소드는 클래스와 직접 연결됩니다. 이렇게 하면 컴파일러가 필요한 클래스와 메서드를 이미 알고 있으므로 동적 디스패치가 필요하지 않습니다. 따라서 정적 메서드 재정의는 불필요하고 비실용적입니다.
인터페이스를 사용하지 않고도 IXMLized 구현을 위한 필수 팩토리 메서드를 적용할 수 있습니다. . 팩토리 메소드를 활용하는 코드는 구체적인 유형을 명시적으로 지정할 수 있으므로 컴파일러가 규정 준수를 확인할 수 있습니다.
"생성자" 없이 IXMLized 구현이 생성되어 이를 기대하는 코드에 전달되는 경우 코드는 여전히 이를 다음과 같이 인식합니다. 유효한 IXML화 가능. 이는 구성이 인터페이스의 일부가 아니라 구현 세부 사항이기 때문입니다. 인터페이스와만 상호 작용하는 모든 코드는 영향을 받지 않습니다.
위 내용은 Java 8 이전의 Java 인터페이스에서 정적 메서드가 허용되지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!