Trail: Learning the Java Language
Lesson: Classes and Objects
Home Page > Learning the Java Language > Classes and Objects

Answers to Questions and Exercises: Annotations

Questions

  1. Question: What is wrong with the following interface:

    public interface House {
        @Deprecated
        public void open();
        public void openFrontDoor();
        public void openBackDoor();
    }
    

    Answer The documentation should reflect why open is deprecated and what to use instead. For example:

    public interface House { 
        /**
         * @deprecated use of open 
         * is discouraged, use
         * openFrontDoor or 
         * openBackDoor instead.
         */
        @Deprecated
        public void open(); 
        public void openFrontDoor();
        public void openBackDoor();
    }
    
  2. Question: Consider this implementation of the House interface, shown in Question 1.

    public class MyHouse implements House {
        public void open() {}
        public void openFrontDoor() {}
        public void openBackDoor() {}
    }
    

    If you compile this program, the compiler complains that open has been deprecated (in the interface). What can you do to get rid of that warning?

    Answer: You can deprecate the implementation of open:

    public class MyHouse implements House { 
        // The documentation is 
        // inherited from the interface.
        @Deprecated
        public void open() {} 
        public void openFrontDoor() {}
        public void openBackDoor() {}
    }
    

    Alternatively, you can suppress the warning:

    public class MyHouse implements House { 
        @SuppressWarnings("deprecation")
        public void open() {} 
        public void openFrontDoor() {}
        public void openBackDoor() {}
    }
    
« PreviousTOC

Problems with the examples? Try Compiling and Running the Examples: FAQs.
Complaints? Compliments? Suggestions? Give us your feedback.

Previous page: Questions and Exercises: Annotations