20170714 基本Annotation

参考文献:《Java疯狂讲义》(第三版)

知识点:Annotation是一个接口,程序可以通过反射来获取指定程序元素的Annotation对象,然后通过Annotation对象来获取注解里的元数据。

基本Annotation:

1、@Override

2、@Deprecated

3、@SuppressWarnings

4、@SafeVarargs

5、@FunctionalInterface

@Override

限定重写父类方法:强制子类必须覆盖父类的方法。

用途:帮助程序员避免一些低级错误,例如把Apple类中的info方法写成inf(),这样的低级错误有可能会成为后期排错的巨大障碍

注意:只能修饰方法

@Deprecated

标记已过时:表示某个程序元素已过时,当其他程序使用已过时的类、方法时,编译器将会给出警告。

当其它程序使用时编译器会发出警告

@SuppressWarnings

抑制编译器警告:取消显示指定的编译器警告。@SuppressWarinings会一直作用于该程序元素的所有子元素。

“堆污染”警告与@SafeVarargs

堆污染:当一个不带泛型的对象赋给一个带泛型的变量时,往往会发生堆污染

Java7开始,Java7将会更严格的检查,Java编译就会发出警告

使用@SuppressWarnings抑制之歌警告

1、使用@SafaVarargs修饰

2、使用@SuppressWarnings(“unchecked”)修饰

3、使用-Xlint:varargs选项

Java8的函数式接口与@FunctionalInterface

Java8规定:如果接口中只有一个抽象方法。该接口就是函数式接口。@FunctionalInterface就是用来指定某个接口必须是函数式接口。

知识点:

函数式接口就是为Java8的Lambda表达式准备的,Java8允许使用Lambda表达式创建函数式接口的实例,因此Java8专门增加了@FunctionalInterface

作用:告诉编译器检查这个接口,保证该接口只能包含一个抽象方法,否则就会出错。

用途:帮助程序员避免一些低级错误。

@FunctionalInterface只能修饰接口

你可能感兴趣的:(20170714 基本Annotation)