【Java】Annotation

将配置写在程序里,但是和之前的程序作出区分,因此形成了注解。通过注解控制操作。

JDK内置的三个注解:@Override、@Deprecated、@SuppressWarnings

准确覆写:@Override

方法覆写:发生在继承关系中,子类定义了与父类的方法相同、参数 类型及个数、返回值类型 相同方法的时候称为方法的覆写,被覆写的方法不能够用于比父类更为严格的访问控制权限。

例:观察方法的覆写


class Person {
	//现在希望进行toString()的覆写,但是由于输入错误,导致方法的覆写错误
	public String tostring() {  //本意是想进行toString方法的覆写
		return "Hello World";
	}
}

public class TestDemo {
	public static void main(String[] args) {
		System.out.println(new Person());
	}
}

输出结果:Person@4b1210ee。 这种错误在编译的时候并不会提示。

为了保证覆写方法的严格准确,可以使用注解(@Override)来检测:如果该方法确定成功地覆写了,则不会有语法错误;如果没有成功地覆写,则认为是语法错误。

在tostring方法处加了注解@Override后,出现如下错误:The method tostring() of type Person must override or implement a supertype method。


class Person {
	//现在希望进行toString()的覆写,但是由于输入错误,导致方法的覆写错误
	@Override //追加了此注解后将明确表示该方法是一个覆写的方法,如果覆写错误,则会出现语法错误
	public String toString() {  //本意是想进行toString方法的覆写
		return "Hello World";
	}
}

public class TestDemo {
	public static void main(String[] args) {
		System.out.println(new Person());
	}
}

输出结果为:Hello World.

声明过期处理:@Deprecated

如果说现在你有一个程序类,从项目的1.0版本一直到了77.0版本都在使用着,但是从78.0版本之后你发现该配置可能会产生问题,那么此时不能直接删除这个类换个新的,因为有可能其他旧版本还在使用这个类,并且这个类在旧版本中没有问题。所以这个时候就希望再进行新版本扩展的时候不要再去使用这个不建议的类,所以加一个过期的注解。

例:观察过期操作

class Person {
	@Deprecated //表示该方法已经不建议使用了,但是即使使用了也不会出错 
	public Person() {}
	public Person(String name) {}
	@Deprecated
	public void fun() {}
}

public class TestDemo {
	public static void main(String[] args) {
		Person per = new Person();//明确地标记出过期
		per.fun();
		per = new Person("");
	}
}

这种过期的处理操作往往出现在一些平台支持的工具上,如:JDK就是一个平台,所以在JDK里实际上有很多的方法都不建议用户再继续使用了。

压制警告:@SuppressWarnings

当调用了某些操作可能产生问题的时候就会出现警告信息,但是警告信息并不是错误,在开发者的可控访问里认为警告没有意义,此时又不想总提示警告,就可以对警告进行限制。

为Person类加了个泛型,但是使用的时候并没有指定类型,所以会出现警告。

【Java】Annotation_第1张图片

压制警告可以在对象上,也可以在方法上,如下是用在方法上:

【Java】Annotation_第2张图片

总结

这三种Annotation是JDK默认支持的程序类中使用的,以后会接触到一些功能性的Annotation

你可能感兴趣的:(Java)