source

Java 인터페이스 방식을 추상화라고 선언하는 이유는 무엇입니까?

nicesource 2022. 11. 14. 21:36
반응형

Java 인터페이스 방식을 추상화라고 선언하는 이유는 무엇입니까?

오늘 Eclipse의 "풀 인터페이스" 리팩터링 기능을 사용하여 기존 클래스를 기반으로 인터페이스를 만들었습니다.대화상자는 새로운 인터페이스의 모든 새로운 메서드를 "추상" 메서드로 생성하도록 제공되었습니다.

그것의 이점은 무엇입니까?

인터페이스 메서드를 추상이라고 선언할 수 있는 것은 불필요하고 무해한 언어의 특징이라고 생각합니다만, 특별히 권장되는 것은 아닙니다.

왜 Eclipse는 이러한 스타일을 지원했을까요? 아니면 왜 누군가가 자발적으로 그런 스타일을 선택했을까요?

설명:인터페이스 메서드가 추상적인 이유를 묻는 것이 아닙니다.그것은 명백합니다.나는 왜 그들이 인터페이스에 있으면 어쨌든 추상적이기 때문에 그것들을 추상적이라고 명시적으로 표시하는 것을 선택했는지 묻고 있다.

Java Language Specification에 따르면abstractinterfaces 키워드는 사용되지 않으므로 더 이상 사용하지 마십시오.(제9.1.1절)

그렇긴 하지만, Java의 하위 호환성에 대한 성향으로 인해, 나는 정말로 그것이 차이를 만들지는 않을지 의심스럽다.abstract키워드가 존재합니다.

이클립스에서의 "그것의 장점"(인터페이스 메서드 선언에 추상 추가)은 jdk1.3의 jdt 이클립스 컴파일러와의 오래된 호환성 문제입니다.

1.4 이후 jdk 라이브러리에는 더 이상 기본 추상 메서드가 포함되어 있지 않습니다(인터페이스를 구현하는 추상 클래스).
이는 Eclipse 1.3 컴파일러의 구현이 존재 여부에 달려있기 때문에 진단 결과를 속이는 것입니다.
Javac 1.3은 1.4 라이브러리에 대해 수행하기를 완전히 거부합니다(-bootclasspath 옵션 사용).

Eclipse 컴파일러는 1.4 컴플라이언스 수준일 가능성이 높기 때문입니다( 참조).Workbench>Preferences>Java>Compiler>JDK Compliance1.3 컴플라이언스 모드를 사용하는 경우 최소 1.3 클래스 라이브러리를 사용합니다. 현재 이클립스 프로젝트 대부분에서 "class"가 필요하지 않습니다.

Java SE 7 JLS(Java 언어 사양):"인터페이스에 선언된 메서드에 대해 public 및/또는 추상적 수식어를 중복하여 지정하는 것은 허용되지만 스타일상 권장되지 않습니다."

Java SE 5.0의 경우: "이전 버전의 Java 플랫폼과의 호환성을 위해 인터페이스로 선언된 메서드의 추상적 수식자를 중복하여 지정하는 것은 허용되지만 스타일상 권장되지 않습니다."

인터페이스의 JLS 메서드에 따르면 기본적으로는 추상화되므로 키워드는 용장화됩니다.이것을 알고 있기 때문에, 「프레젠테이션의 혼란을 피하기 위해서」는 결코 사용하지 않습니다.

언급URL : https://stackoverflow.com/questions/641536/why-would-one-declare-a-java-interface-method-as-abstract

반응형