2012-11-29 1 views
3

클래스 StringBuilder extends AbstractStringBuilderimplements java.io.Serializable, CharSequence입니다.어쨌든 AbstractStringBuilder에서 상속하는 경우 StringBuilder가 CharSequence를 구현해야하는 이유는 무엇입니까?

AbstractStringBuilder implements Appendable, CharSequence.

두 클래스 모두 1.5 이후입니다. 누구도 StringBuilderCharSequence을 구현해야하지만 Appendable을 구현해야하는 이유를 설명 할 수 있습니까? 그것은 어쨌든 AbstractStringBuilder에서 그 둘 모두를 상속합니까?

답변

3

의미 상 정확히 implements CharSequence이 지정되었는지 여부는 동일합니다. StringBuilder에 명시 적으로 선언 된 이유는 JDK의 코드베이스의 내역을 검토하는 것 외에는 대답 할 수 없으며, 어쨌든 그 대답은 그다지 유익하지 않습니다.

예를 들어, 추상적 인 수퍼 클래스가 StringBuilder의 이전 버전에 해당 implements 절이 필요했던 나중에 도입되었을 수 있습니다. 추상 클래스를 도입 한 후에, 이것은 제거되었을 수 있었지만, 해를 끼치 지 않았을뿐입니다.

+0

흥미롭게도 'AbstractStringBuilder'는 JavaDoc에 없습니다 (5, 6 및 7, cf. http://docs.oracle.com/javase/6/docs/api/java/lang/StringBuilder.html 참조). 누군가 다른 클래스가 이것을 확장함으로써 이익을 얻는다는 것을 의미 할 수도 있음을 암시 할 수도 있습니다. 그러나 그것은 버려지거나 절대 필요하지 않습니다. –

+0

@ AndersR.Bystrup 그건 참으로 좋은 점입니다. 나는 Javadoc이 수퍼 클래스에 대해 거짓말을하는 현상을 결코 알지 못했지만'AbstractStringBuilder'는 패키지 전용이므로 어쩌면 이것이 실제로 표준 일 수 있습니다. 문서에서는'StringBuilder'가'Appendable'을 구현한다는 것을 명시 적으로 설명합니다. –

관련 문제