IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java里的注解 -> 正文阅读

[Java知识库]java里的注解

从JDK5开始,Java增加对元数据的支持,也就是 注解(Annotation) ,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。

注释 ( comment ) 用于注解说明解释程序的文字就是 注释 。

  • 注解入门
  • 内置注解
  • 自定义注解,元注解

注解入门

注解是JAVA5开始引入的新技术。注解其实就是代码里的特殊标记,它用于替代配置文件:传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在Java技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类。

注解的作用:

  • 注解不属于代码,但它可以对程序做出解释
  • 可以被其它程序(如编译器等)读取,有助于其它程序可以进行针对性的优化。

注解的格式:

  • 注解是以“@注释名”在代码中存在的,还可以添加参数值,例如:@SuppressWarning(value=“unchecked”)

注解在哪里使用?

  • 可以附加在package, class, method, field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问
package com.peng.annotation;

public class Test {
    // @Override 就是重写的注解,一般idea里黄色的字都是注解
    @Override
    public String toString() {
        return super.toString();
    }
}

内置注解

内置注解是系统自带的注解,一般使用较多。

  • @Override:定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法申明。
  • @Deprecated:定义在java.lang.Deprecated中,此注释可以用于修辞方法,属性,类,表示不鼓励程序员使用这样的元素,通常十一位内它很危险或者存在更好的选择。(Deprecated: adj.弃用的)
  • @SuppressWarnings:定义在java.lang.SuppressWarrings中,用来抑制编译时的警告信息。与前两个注解,该注解必须添加一个参数才可使用,且参数都是内置时已定义好的,如"all",“unchecked”,{“all”,“unchecked”}等

元注解

除了直接使用JDK 定义好的注解,我们还可以自定义注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解),他们分别是:
  • @Target

    • 用于解释我们的注解将用于什么范围(例如一个方法或一个域),该范围有一个明确的枚举类 ElemenetType
  • @Retention

    • 表示在什么级别保存该注解信息。可选的参数值在枚举类型 RetentionPolicy中。
  • @Documented

    • 表示将此注解包含在javadoc中,它表示此注解会被javadoc提取成文档。
  • @Inherited

    • 允许子类继承父类的注解

自定义注解

使用**@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface**用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。

定义注解格式:
  public @interface 注解名 {定义体}

注解参数的可支持数据类型:

1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)
    2.String类型
    3.Class类型
    4.enum类型
    5.Annotation类型
    6.以上所有类型的数组

小技巧:当注解只有一个时,且其值名为value,则value可以省略。

package com.peng.annnotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

// 自定义注解
public class Test {
    // 注解可以显示赋值, 如果没有默认值, 就必须给注解复制
    @MyAnnotation(name = "", age = 18, id = 1, schools = {})
    // 当注解只有一个时,且其值名为value,则value可以省略
    @MyAnnotation2("")
    public void test(){

    }
}

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{
    // 注解的参数: 参数类型 + 参数名();
    String name() default "";
    int age() default 18;
    int id() default -1; //常用小技巧,设置-1表示这项找不到,表示为空。
    String[] schools() default {"浙江工商大学", "浙江大学"};
}

@interface MyAnnotation2{
    String value();
}
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-06 12:04:30  更:2021-10-06 12:08:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:34:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码