java 基础之注解

1.jdk常见注解:@Overload 、 @Deprecated 、 @Suppvisewarnings

2.注解分类:源码注解、编译时注解、运行时注解、元注解(注解的注解),标识注解(没有成员的注解)

3.元注解

@Target({ElementType.METHOD , ElementType.TYPE})//作用域
@Retention(RetentionPolicy.RUNTIME)//注解安生命周期分类
@Inherited//允许子类继承
@Documented//生成doc时会包含注解的信息

4.自定义写法:

1.使用@interface定义注解
2.成员必须以无参无异常方式声明
3.成员类型必须是原始类或String、Class、Annotation、Enumeration
4.当注解只有一个成员时,成员名必须为value(),使用时赋值时可忽略成员名和“=”
5.可以用default为成员赋默认值
6.被注解的类只能继承被注解的类有效,接口无效。

5.注解的定义

@Target({ElementType.METHOD , ElementType.TYPE})//作用域
@Retention(RetentionPolicy.RUNTIME)//注解安生命周期分类
@Inherited//允许子类继承
@Documented//生成doc时会包含注解的信息
public @interface Demo {//使用@interface定义注解

    String desc();//成员必须以无参无异常方式声明

    //Object haha();//成员类型必须是原始类或String、Class、Annotation、Enumeration

//    String value() default "hah" ;//当注解只有一个成员时,成员名必须为value(),赋值时可忽略成员名和“=”

    int age() default 18;//可以用default为成员赋默认值

}

6.自定义注解的使用

  

@Demo(desc="解析类上的注解")
    class PassAnn{
        @Demo(desc="解析方法上的注解",age=20)
        public void test(){}

    }

    @Demo(desc="haha",age = 20)
    private static void test1() {
        try {
            Class forName = Class.forName("com.itcast.test.Test4$PassAnn");
            boolean isExist = forName.isAnnotationPresent(Demo.class);
            if (isExist) {
                Demo demo1 = (Demo)forName.getAnnotation(Demo.class);
                System.out.println("desc:"+demo1.desc()+" , age:"+demo1.age());
            }

            Method[] methods = forName.getMethods();
            for (Method method : methods) {
                Annotation[] annotations = method.getAnnotations();
                for (Annotation annotation : annotations) {
                    if (annotation instanceof Demo ) {
                        Demo demo2 = (Demo)annotation;
                        System.out.println("desc:"+demo2.desc()+" , age:"+demo2.age());
                    }

                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
时间: 2024-10-06 01:52:45

java 基础之注解的相关文章

Java基础:注解Annotation

从JDK5开始,Java增加了注解(Annotation),注解是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通过使用注解,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息.代码分析工具.开发工具和部署工具可以通过这些补充信息进行验证.处理或者进行部署. 注解提供了一种为程序元素(包.类.构造器.方法.成员变量.参数.局域变量)设置元数据的方法.跟public.static等修饰符一样,注解是这些程序元素的属性,是这些程序元素的一部分,不能脱离

java基础篇---注解(Annotation)

一.概念 Annontation是Java5开始引入的新特征.中文名称一般叫注解.它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类.方法.成员变量等)进行关联.更通俗的意思是为程序的元素(类.方法.成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的. Annontation像一种修饰符一样,应用于包.类型.构造方法.方法.成员变量.参数及本地变量的声明语句中. java.lang.annotation.

Java基础加强-(注解,类加载器,servlet3.0新特性)

1.   Annotation注解 1.1.  Annotation概述 Annotation是JDK 5.0以后提供对元数据的支持,可以在编译.加载和运行时被读取,并执行相应的处理.所谓Annotation就是提供了一种为程序元素设置元数据的方法,可用于修饰包.类.构造器.方法.成员变量.参数和局部变量的声明,这些信息被存储在Annotation的“name=value”对中. Annotation能被用来为程序元素(类.方法.成员变量等)设置元数据,比如一段代码的作者或者告诉编译器禁止一些特

Java基础之注解的使用

前言 注解在JDK源码.Spring源码.企业项目中都是运用的非常广泛,JDK源码中比较常见的有@Override.@Deprecated.@SuppressWarnings.我将系统性的介绍一下注解,以及注解的使用. 原文地址:https://www.cnblogs.com/sunshine798798/p/9742258.html

Java 基础之--注解Annotation详解

自定义注解入门: public @interface Annotation01 { //set default value ""; String value() default ""; } 1.保持策略@Retention annotation: 告知编译器如何去运行,default is RetentionPolicy.CLASS (1).RetentionPolicy.CLASS : -->会将注解保存在class 文件中,但运行时候不会被virtual

java基础巩固笔记(6)-注解

java基础巩固笔记(6)-注解 java基础巩固笔记6-注解 注解的应用结构图 元注解 自定义注解 示例代码 参考资料 注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性,与类.接口.枚举是在同一个层次.它可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明,注释. API Package java.lang.annotation 注解的应用结构图 调用/结构关系:A<–B<–C A,B,C解释如下: A:注解类

Java基础加强-反射、注解

基础加强 一回顾泛型 二泛型的反射 三注解 基础加强 一.回顾泛型 泛型的基本概念: 以ArrayList<E>为例: ① ArrayList<E>中的E称为类型参数变量 ArrayList<Integer>中的Integer称为实际类型参数 ②整个ArrayList<E>称为泛型类型 整个ArrayList<Integer>称为参数化的类型(ParameterizedType) 定义一个泛型方法: : // <T>:泛型定义的声明,

Java基础笔记 – Annotation注解的介绍和使用 自定义注解

Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Annotation的工作原理:2.@Override注解:3.@Deprecated注解:4.@SuppressWarnings注解:5.自定义注解:5.1.添加变量:5.2.添加默认值:5.3.多变量使用枚举:5.4.数组变量:6.设置注解的作用范围:6.1.在自定义注解中的使用例子:7.使用反射读取R

Java基础13:反射与注解详解

Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Oracle官方对反射的解释是 Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use reflected fi