基本原则:
1.总是使用@Override标记被覆盖的方法,@Override可以在编译时检查是否正确的覆盖方法,以便及时发现错误。如果你的类是非抽象的,并且继承了抽象类或实现了接口,仍然建议使用@Override注释
2.标记(marker)接口指不包含任何方法的接口,如Serializable,Set。如果需要限制方法的参数类型,或者减小接口范围(如Set接口继承Collection接口,Set减小了Collection的接口范围),那么应该使用标记接口
3.如果你的框架已经大量使用了Annotation。或者需要标记除类和接口外的目标(如方法),或者需要在未来增加更多的标记信息,那么应使用Annotation进行标记