Download the JDK
Search the Tutorials
Trail: Learning the Java Language
Lesson: Classes and Objects
Home Page > Learning the Java Language > Classes and Objects
« Previous • TOC
Answers to Questions and Exercises: Annotations

### Questions

> Question 1: What is wrong with the following inteface:

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

> Answer 1: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();
> >     }

> Question 2: Compile this program:

> >     interface Closable {
> >         void close();
> >     }

> >     class File implements Closable {
> >         @Override
> >         public void close() {
> >             //... close this file...
> >         }
> >     }

> What happens? Can you explain why?

> Answer 2: The compiler generates an error complaining that `File.close` doesn't override any method from its superclass. This is because it is not overriding `Closable.close`, it is implementing it!

> Question 3: 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 3: 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() {}
> >     }

Previous page: Questions and Exercises: Annotations