概念
注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释
”,
注释会被编译器直接忽略,注解则可以被编译器打包进入class文件
,因此,注解是一种用作标注的“元数据
”。
常见的内置注解如下
Built-In Java Annotations used in Java code
@Override
@SuppressWarnings
@Deprecated
Built-In Java Annotations used in other annotations
@Target
@Retention
@Inherited
@Documented
@Override
@Override
@Override注释可确保子类方法重写父类方法。
如果不是这样,则发生编译时间错误。
比如下面这个,子类Dog
继承了父类Animal
,但是重写的方法不对,(eatSomething的S写成小写了)所以会报错.
java: 方法不会覆盖或实现超类型的方法
也就是说,写错了编译会报错的,如果不写注解 @Override
,就不会报错!
public class Test {
public static void main(String[] args) throws UnsupportedEncodingException {
Animal a = new Dog();
a.eatSomething();
}
}
class Animal {
void eatSomething() {
System.out.println("eating something");
}
}
class Dog extends Animal {
@Override
void eatomething() {
System.out.println("eating foods");
}//should be eatSomething
}
@SuppressWarnings
@SuppressWarnings批注:用于禁止编译器发出的警告。
public class Test {
//@SuppressWarnings("unchecked")
public static void main(String args[]) {
ArrayList list = new ArrayList();
list.add("sonoo");
list.add("vimal");
list.add("ratan");
for (Object obj : list)
System.out.println(obj);
}
}
如果不写@SuppressWarnings
会有提示需要修正,因为没写泛型,不好.
如下,在idea中会有底色提示
加上注解,没有错误提示了
当然,只是不让提示,还是可以正常运行
@Deprecated
@Deprecated注释表示此方法已弃用,因此编译器将显示警告。 它通知用户它可能会在将来的版本中删除。 因此,最好不要使用此类方法。
public class Test {
public static void main(String args[]) {
A a = new A();
a.n();
}
}
class A {
void m() {
System.out.println("hello m");
}
@Deprecated
void n() {
System.out.println("hello n");
}
}
总之一句话,依旧可以用,只是建议不要用
总结
@Override
用于检查重写是否正确@SuppressWarnings
表示忽略某些警告@Deprecated
表示是否降级