java注解(java内容的标签)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 标准解释:java中的类、构造器、方法、成员变量、参数都可以被注解进行贴上标签。

一、概念解释

1.什么是注解?

标准解释:java中的类、构造器、方法、成员变量、参数都可以被注解进行贴上标签。

直白理解:注解也可以理解为标签。对一个人的评价高矮胖瘦,好人坏人或者渣男老实人等,就是起到你给它贴上这个标签,但是这些标签又不会对他本人产生什么影响。因为那个标签只是你的看法

2.注解有什么作用?

答:就是为了方便对类中的信息进行标注注释,方便查看。不会对实际代码产生什么影响。

3.注解的分类?

(1)自定义注解

答:自己可以任意DIY定义的注解:比如给其他人打上你想打的任意标签信息

(2)元注解

答:注解的注解(就是标签上面再贴标签):对自定义的标签设置可以在哪里使用和能存活多久

常用的有两个:

@Target:约束自定义注解只能在哪些地方使用

//括号里面加入以下哪个,哪种类型就可以允许贴上这个标签

类、接口----TYPE

成员变量----FIELD

成员方法----METHOD

方法参数----PARAMETER

构造器----CONSTRUCTOR

局部变量----LOCAL_VARIABLE

@Retention:申明注解的生命周期

只在源码阶段(用的比较少)-----SOURCE

源码、字节码阶段(默认)---CLASS

源码、字节码、运行阶段(开发常用)--RUNTIME

(3)注解解析

答:对已经被这个注解过的地方进行提取自定义的注解信息

提取被该注解的类就创建该类的信息,然后按照步骤提取。

提取被该注解的方法就创建该类的信息,然后按照步骤提取。

提取被该注解的属性就创建该类的信息,然后按照步骤提取。

二、实战案例分析

1.自定义注解

创建格式:

public @interface 注解名称 {

      属性类型 属性名()defalt 默认值;

}

创建步骤:

1.创建一个类(类名就是注解名称),把类中的class改为@interface。然后定义要贴上的标签数据

//注解
package learn2;
public @interface  BadBoy {
     String name() default "坏男孩";//自定义标签值            这个default "坏男孩";----不写也可以,那就没有默认值了
     int age();//自定义标签值
     String value();//特殊标签值。(标签里面写上这个,被打上这个标签的属性,必须要有具体赋值。就像试吃食品,吃一个没事,吃多了就必须要给钱--赋值)
}

2.给需要的地方打上注解标签

//被测试的类
package learn2;
@BadBoy(name="汉奸",age = 45,value = "自定义")//在类上面建立就是类的注释
public class People {
    @BadBoy(name = "方法",age = 15,value = "自定义") //在方法上面建立就是方法的注释
    public static void main(String[] args) {
    @BadBoy(name = "成员属性",age = 19,value = "自定义")//在属性上面建立就是属性的注释
    String hobby="打篮球";
    @BadBoy(age = 19,value ="自定义")//在属性上面建立就是属性的注释
    String hobby1="跳舞";
    }
}

2.元注解

创建步骤:

1.在注解的上面创建@Target@Retention这两个常用的元注解,里面的参数根据不同需要填入,参数不懂的滑到上面概念解析那里看。

//被测试的元注解
package learn2;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//里面参数不懂的返回上面看概念解析
//元注解--表示可以在哪里贴上
@Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD,ElementType.PARAMETER,ElementType.CONSTRUCTOR,ElementType.LOCAL_VARIABLE})
//元注解---表示一直在运行阶段
@Retention(RetentionPolicy.RUNTIME)
//自定义注解
public @interface  BadBoy {
     String name() default "坏男孩";
}

2.元注解限制了自定义标签给谁用和生命周期等

//正常使用到的类
package learn2;
@BadBoy(name="汉奸")
public class People {
    @BadBoy(name = "方法")
    public static void main(String[] args) {
    @BadBoy(name = "爱好")
    String hobby="打篮球";
    }
}

3.注解解析

解析类

创建步骤:

1.创建要解析的类对象

2.if用isAnnotationPresent判断这个类是否有注解,(注解.class)

3.用getDeclaredAnnotation方法直接获取,(注解.class)

4.打印需要该解析类里面的某个自定义属性

解析方法

创建步骤:

1.创建要解析的类对象

2.用getDeclaredMethod获取方法("要获取的方法名")

3.if用isAnnotationPresent判断这个类是否有注解,(注解.class)

4.用getDeclaredAnnotation方法直接获取,(注解.class)

5.打印需要该解析类里面的某个自定义属性

package learn2;
import java.lang.reflect.Method;
@BadBoy(name="我的名字就是类啊")
public class People {
    @BadBoy(name = "我的名字就是方法啊")
    public static void main(String[] args) throws NoSuchMethodException {
    //注解的解析
        //一、解析类步骤
        //1.解析这个类的对象
        Class p = People.class;
        //2.判断这个类是否有这个注解
        if (p.isAnnotationPresent(BadBoy.class)){
            //3.直接获取该注释对象
            BadBoy b = (BadBoy) p.getDeclaredAnnotation(BadBoy.class);//这里不用到万能键补全键,要手动进行强转
            //5.打印需要的值
            System.out.println(b.name());
        }
        //二、解析方法步骤
        //1.解析这个类的对象
        Class p2 = People.class;
        //2.获取要获取的方法
        Method m = p2.getDeclaredMethod("main", String[].class);
        //3.判断这个类是否有这个注解
        if (m.isAnnotationPresent(BadBoy.class)){
            //4.直接获取该注释对象
            BadBoy b2 = (BadBoy) m.getDeclaredAnnotation(BadBoy.class);//这里不用到万能键补全键,要手动进行强转
            //5.打印需要的值
            System.out.println(b2.name());
        }
    }
}

运行结果:

我的名字就是类啊

我的名字就是方法啊

旁白:注解就是对类或者方法,属性什么的进行备注贴标签,在庞大的代码中能更快的寻找阅读代码,这些注解不会对实际代码产生什么影响,注解有自定义的,还有注解的注解,也就是元注解,还有可以对这些注解里面写入的内容进行解析读取出来。

目录
相关文章
|
3月前
|
Java 开发者 UED
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
【实战宝典】Java异常处理大师级教程:throws关键字,让异常声明成为你的专属标签!
59 3
|
25天前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
86 43
Java学习十六—掌握注解:让编程更简单
|
19天前
|
Java 开发者 Spring
[Java]自定义注解
本文介绍了Java中的四个元注解(@Target、@Retention、@Documented、@Inherited)及其使用方法,并详细讲解了自定义注解的定义和使用细节。文章还提到了Spring框架中的@AliasFor注解,通过示例帮助读者更好地理解和应用这些注解。文中强调了注解的生命周期、继承性和文档化特性,适合初学者和进阶开发者参考。
42 14
|
19天前
|
前端开发 Java
[Java]讲解@CallerSensitive注解
本文介绍了 `@CallerSensitive` 注解及其作用,通过 `Reflection.getCallerClass()` 方法返回调用方的 Class 对象。文章还详细解释了如何通过配置 VM Options 使自定义类被启动类加载器加载,以识别该注解。涉及的 VM Options 包括 `-Xbootclasspath`、`-Xbootclasspath/a` 和 `-Xbootclasspath/p`。最后,推荐了几篇关于 ClassLoader 的详细文章,供读者进一步学习。
29 12
|
13天前
|
Java 编译器
Java进阶之标准注解
Java进阶之标准注解
26 0
|
1月前
|
JSON Java 数据库
java 常用注解大全、注解笔记
关于Java常用注解的大全和笔记,涵盖了实体类、JSON处理、HTTP请求映射等多个方面的注解使用。
34 0
java 常用注解大全、注解笔记
|
2月前
|
Arthas Java 测试技术
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
Java字节码文件、组成、详解、分析;常用工具,jclasslib插件、阿里arthas工具;如何定位线上问题;Java注解
Java字节码文件、组成,jclasslib插件、阿里arthas工具,Java注解
|
1月前
|
IDE Java 编译器
java的反射与注解
java的反射与注解
16 0
|
2月前
|
Java 编译器 程序员
Java注解,元注解,自定义注解的使用
本文讲解了Java中注解的概念和作用,包括基本注解的用法(@Override, @Deprecated, @SuppressWarnings, @SafeVarargs, @FunctionalInterface),Java提供的元注解(@Retention, @Target, @Documented, @Inherited),以及如何自定义注解并通过反射获取注解信息。
Java注解,元注解,自定义注解的使用
|
2月前
|
XML JavaScript Java
NekoHTML 是一个基于Java的HTML扫描器和标签补全器
**NekoHTML** 是一个基于Java的HTML扫描器和标签补全器(tag balancer),由J. Andrew Clark开发。它主要用于解析HTML文档,并能够“修正”许多在编写HTML文档过程中常犯的错误,如增补缺失的父元素、自动用结束标签关闭相应的元素,以及处理不匹配的内嵌元素标签等。这使得程序能够以标准的XML接口来访问HTML文档中的信息。 ### NekoHTML的主要特点包括: 1. **错误修正**:能够自动修正HTML中的常见错误,如未闭合的标签等。 2. **DOM树生成**:将HTML源代码转化为DOM(Document Object Model)结构,便