Errata 6

From APIDesign

(Difference between revisions)
Jump to: navigation, search

JaroslavTulach (Talk | contribs)
(New page: The chapter 6 discusses '''protected abstract''' methods and says that removing such method is source compatible (page 89). In fact that was true until Java 5 appeared. However wit...)
Next diff →

Revision as of 07:38, 8 October 2010

The chapter 6 discusses protected abstract methods and says that removing such method is source compatible (page 89). In fact that was true until Java 5 appeared. However with the newly introduced @Override annotation this is no longer true.

does not exists: anagram.ui.Anagrams

If you create a new version of public abstract class Anagrams dropping either getWordLibrary or getScrambler (or both), the @Override annotation in AnagramsWithConstructor will cause the compiler to complain:

does not exists: anagram.ui.init

Source compatibility is gone. As an API designer of public class Anagrams you don't know whether your users (writing class AnagramsWithConstructor) will use @Override. As a result don't even try to remove protected abstract methods from an API. It was never good idea anyway and since Java 5 it is not backward compatible.

-- Rijk van Haaften, Oct 8, 2010

Personal tools
buy