Errata 6

From APIDesign

Revision as of 07:39, 8 October 2010 by JaroslavTulach (Talk | contribs)
Jump to: navigation, search

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 the newly introduced @Override annotation changed everything.

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