JDK新特性-----注解@ (@Override、@Deprecated、@SuppressWarings)
2018-12-07 15:19:36Java
注解—@Override 准确覆写
为什么会有@Override?
如果子类Student需要覆写父类Object的toString方法:
class Student
{
public String tostring() //希望覆写toString,但是并没有报错
{
return "学生好好学习";
}
}
public class Annotation
{
public static void main(String[] args)
{
Student s=new Student();
System.out.println(s); //CODE.Java新特性.Student@4554617c 输出的对象地址,并美有覆写成功
}
}
可以看出并没有覆写成功。
而 @Override 是 当子类覆写父类方法时,此注解检查覆写的方法是否正确声明,只有满足覆写方法要求才会编译通过,否则编译出错。
@Override作用:
当用了@Override 会检查覆写方法声明正确性:
覆写方法声明正确编译不会报错:
注解----@Deprecated 过期声明
为什么要有@Deprecated?
一个很简单例子,qq从98年开发,到现在有很多版本,但是之前的版本依然可以使用,对于旧版本中的一些类新版本不会删掉,而是在新版本扩展的时候不再去使用这个不建议的类,所以加一个过期的注解(@Deprecated)。
@Deprecated
class Student
{
private String name;
@Deprecated
public Student() //声明该方法不建议使用,但是使用也不会报错
{}
public Student(String name)
{
this.name=name;
}
@Deprecated
public void print()
{
System.out.println(this.name);
}
}
public class Annotation
{
public static void main(String[] args)
{
Student s1=new Student(); //表示该构造方法不建议使用,但是使用也不会报错
s1.print(); //null
Student s2=new Student("pick");
s2.print(); //表示该方法不建议使用,使用也会实现原本功能
}
}
建议用户不使用原有的类或者方法时,可以在类或方法上@Deprecated表示在当前版本中不推荐使用。
一般过期处理会在源代码中出现,只要一个名称上出现一条横线表明该方法或类被过期处理。
注解----@SuppressWarings 压制警告
首先,调用某些操作可能产生问题的时候会出现警告信息,警告不是错误,比如声明的变量没有使用,会有警告,当加上@SuppressWarings ,就没有警告:
///@SuppressWarings 压制警告
public class Annotation
{
public static void main(String[] args)
{
@SuppressWarnings( "unused" ) //加上压制警告,就不会有警告
int a; //变量a没有使用,会有警告
}
}