跟王老师学注解(二)注解的分类及内建注解

跟王老师学注解(二):注解的分类及内建注解

主讲教师:王少华   QQ群号:483773664

一、注解的分类

在Java中,根据注解的使用方法和用途,可将注解分成3类,分别是

内建注解(也称为基本注解),定义于java.lang包下

元注解(Meta Annotation)

自定义注解

二、内建注解

(一)分类

在JDK5.0及以上的版本的java.lang包下提供了3种标准的注解类型,分别是

@Override:

@Deprecated

@SuppressWarnings

(二)@Override

@Override被用作标方法,它说明了被标的方法重写了父类的方法。

1、它的使用方法很简单,只要在重写的子类方法前加上@Override即可,如下代码所示


1

2

3

4

5

public class Fruit {

    public void getObjectInfo(){

        System.out.println("水果的getObjectInfo方法");

    }

}


1

2

3

4

5

6

public class Apple extends Fruit {

    @Override

    public void getObjectInfo() {

        System.out.println("苹果重写水果的getObjectInfo方法");

    }

}

2、如果不是重写父类的方法,而使用了@Override注解,会在编译报错

因此@Override经常用于防止重写父类方法时方法名拼写错误,

3、另外,特别注意,@Override只能用于修饰方法,而不能用于修饰其他程序元素!

(三)@Deprecated注解

用于表示某个程序元素(类、方法、成员变量等)已过时,编译器将不再喜欢使用这个被标的程序元素。

如果使用(无论是当前类还是其他包下的类使用),编译则会在该程序元素上画一条斜线,表示程序元素已过时。

(四)、@SuppressWarning注解

1、@SuppressWarning注解

@SuppressWarnings注解表示阻止编译器警告,被用于有选择地关闭编译器对类、方法和成员变量等程序元素及其子元素的警告。

@SuppressWarnings会一直作用于该程序元素的所有子元素


1

2

3

4

5

6

7

8

9

10

11

12

13

14

@SuppressWarnings({"unchecked","rawtypes"})

public class Apple extends Fruit {

    

    @Override

    public void getObjectInfo() {

        System.out.println("苹果重写水果的getObjectInfo方法");

    }

    

    public void printObject(){

        Apple apple = new Apple();

        List list = new ArrayList();

        list.add(apple);

    }

}

@SuppressWarnings("unchecked")注解来标识Apple类取消类型检查编译器警告

rawtypes:是eclipse 3.6自带的注解,传参时也要传递带泛型的参数

2、当@SuppressWarnings后面的括号中的value值为如下参数时,编译器将取消相应的警告

deprecation:编译器将取消使用了过时程序元素的警告

unchecked:取消执行了未检查的转换

unused:取消某程序元素未被使用的警告

fallthrough: 取消当swithc 程序块直接通往下一种情况而没有break时的警告

path: 取消在类路径、源文件路径等中有不存在的路径时的警告

serial :取消当在序列化的类上缺少serialVersionUID定义时的警告

finally :取消当有finally子句不能正常完成时的警告

all: 取消所有情况的警告

3、使用@SuppressWarnings的参数

当注解类型里只有一个value成员变量,使用该注解时可以直接在注解后的括号中指定value成员变量的值,而无须使用name=value结构对的形式。

当注解类型里有多个value成员变量,可以使用大括号


1

2

3

4

@SuppressWarnings({"serial","unchecked"})

public class Apple extends Fruit implements Serializable{

...

}

三、注解的语法

使用注解时要在其前面加一个“@”符号,同时将注解作为修饰符使用。


1

@+AnnotationName+(..逗号分割的多个name..)

其中value值必须为编译时常量、内嵌的Annotation或数组。如果注解类型定义了某个NAME的默认值,则这个结构对参数可以被省略。

(一)不带参数的注解


1

2

3

4

@Override

public void getObjectInfo() {

    System.out.println("苹果重写水果的getObjectInfo方法");

}

(二)带一个参数的注解


1

2

3

4

5

6

@SuppressWarnings(value="unused")

public static void main(String[] args) {

    Apple apple = new Apple();

    apple.printObject();

    List<Apple> apples;

}

(三)带多个参数的注解


1

2

3

@SuppressWarnings({"serial","unchecked"})

public class Apple extends Fruit implements Serializable{

}

来自为知笔记(Wiz)

时间: 2024-08-08 13:54:48

跟王老师学注解(二)注解的分类及内建注解的相关文章

跟王老师学注解(一):注解概述

跟王老师学注解(一):注解概述 主讲教师:王少华   QQ群号:483773664 一.问题来了 真实的悲惨的例子 1 2 3 4 5 public class SupClass {     public void getObjectInfo(){         System.out.println("我是父类");     } } 1 2 3 4 5 public class ChildClass extends SupClass{     public void getObjec

跟王老师学注解(三):元注解

跟王老师学注解(三):元注解 主讲教师:王少华   QQ群号:483773664 元注解,是用来修饰其他的注解定义.java.lang.annotation包下提供了4个元注解,分别是@Target注解.@Retention注解.@Documented注解以及@Inherited注解. 一.@Target (一)简介 用于指定被修饰的注解能用于修饰哪些程序元素 @Target注解类型有唯一的value作为成员变量,value的类型为java.lang.annotation.ElementType

跟王老师学注解(四):自定义注解

跟王老师学注解(四):自定义注解 主讲教师:王少华   QQ群号:483773664 到此,我们已经学习完了JDK提供的3种内建注解及4种元注解,下面来了解自定义注解 一.注解类型 (一)注解类型与接口:注解类型是一种接口,但它又不同于接口 1.注解类型使用关键字@interface而不是interface 1 2 public @interface TestAno { } @interface隐含继承java.lang.annotation.Annotation接口 2.注解类型的方法定义是独

跟王老师学注解(五):利用反射读取注解信息

跟王老师学注解(五):读取注解信息 主讲教师:王少华   QQ群号:483773664 一.注解被读取 (一)条件 当一个注解类型被定义为运行时注解后,该注解才是运行时可以见,当class文件被装载时被保存在class文件中的注解才会被Java虚拟机所读取. 要把@Retention注解的value成员变量的值设为RetentionPolicy.RUNTIME (二)办法 我们已知所有的注解都是继承的java.lang.Annotation接口,也就是说Annotation是所有接口的父接口.除

跟王老师学注解(六):注解应用案例

跟王老师学注解(六):注解应用案例 主讲教师:王少华   QQ群号:483773664 一.需求 利用注解,做一个Bean的数据校验 要求: 用户名是否能为空,用户名的长度不能超过指定长度,不能少于指定长度 二.参考代码 @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.FIELD, ElementType.PARAMETER }) public @interface MyValidate {     // 是否可以为空     

跟王老师学反射(二):Java类的加载、连接和初始化

跟王老师学反射(二):Java类的加载.连接和初始化 主讲教师:王少华   QQ群号:483773664 学习内容: 了解类的加载.连接和初始化 一.类的生命周期 当我们编写一个java的源文件后,经过编译会生成一个后缀名为class的文件,这种文件叫做字节码文件,只有这种字节码文件才能够在java虚拟机中运行,java类的生命周期就是指一个class文件从加载到卸载的全过程.一个java类的完整的生命周期会经历加载.连接.初始化.使用.和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直

跟王老师学枚举(二):使用枚举

跟王老师学枚举(二):使用枚举 主讲教师:王少华   QQ群号:483773664 一.Java枚举 (一).枚举的关键字是enum 1 2 3 public enum Grade { } (二).枚举也是一个类 1.枚举的构造方法,默认是私有化的 2.枚举的实例对象,默认public static final 1 2 3 public enum Grade {     A,B,C,D,E } 3.枚举的实例对象的变量名,必须放在所有内容之前 二.使用枚举 (一)默认构造方法 1 2 3 pub

跟王老师学MySQL:MySQL数据类型之小数类型

跟王老师学MySQL:MySQL数据类型之小数类型 主讲教师:王少华   QQ群号:483773664 学习内容 小数类型有哪些以及它们的取值范围 定义语法中的M和D的含义 定点型和浮点型的区别 一.简介 MySQL中使用浮点数类型和定点数类型来表示小数. 浮点数类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型). 定点数类型就是DECIMAL型. 二.字节数.取值范围 三.定义语法 1 类据类型 (M,D) M:精度,数据的总长度 D:标度,小数点后的长度 注: 小数点不占长

跟王老师学MySQL:MySQL数据类型之字符类型

跟王老师学MySQL:MySQL数据类型之字符类型 主讲教师:王少华   QQ群号:483773664 学习内容: 字符串类型的种类及其特点 char和varchar的异同 字符串类型是在数据库中存储字符串的数据类型. 字符串类型包括 CHAR. VARCHAR BLOB TEXT 一.char和varchar (一)定义语法 1 字符串类型 (M) 注: 字符串类型:char或varchar M:指定了该字符串最大长度 (二)二者不同之处 char类型长度是固定的,即在创建表时就指定了,其长度