# 问题和练习：注解

> 原文： [https://docs.oracle.com/javase/tutorial/java/annotations/QandE/questions.html](https://docs.oracle.com/javase/tutorial/java/annotations/QandE/questions.html)

## 问题

1.  以下界面有什么问题？

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

    ```

2.  考虑`House`接口的这种实现，如问题 1 所示。

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

    ```

    如果编译此程序，编译器会生成警告，因为`open`已弃用（在界面中）。你能做些什么来摆脱那个警告？

3.  以下代码是否会编译而不会出错？为什么或者为什么不？

    ```
    public @interface Meal { ... }

    @Meal("breakfast", mainDish="cereal")
    @Meal("lunch", mainDish="pizza")
    @Meal("dinner", mainDish="salad")
    public void evaluateDiet() { ... }

    ```

## 演习

1.  使用元素`id`，`synopsis`，`engineer`和`date`为增强请求定义注解类型。为工程师指定默认值为`unassigned`，为日期指定`unknown`。

[检查你的答案。](answers.html)