首页 > 编程语言 >7.Java 注解和元注解(三种注解、四种元注解)

7.Java 注解和元注解(三种注解、四种元注解)

时间:2024-11-16 13:17:23浏览次数:3  
标签:Java my class 修饰 注解 com public 四种

一、注解概述

  • 注解也被称为元数据,用于修饰包、类、方法等数据信息

  • 和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息

  • 在 JavaSE 中,注解使用的目的比较简单,例如标记过时的功能,忽略警告等

  • JavaEE 中注解会充当更加重要的角色

二、三种注解

1、@Override
(1)基本介绍
  • 指定重写父类方法(从编译层面验证),如果父类没有被重写的该方法,则报错

  • 不用 @Override 修饰,仍然能构成重写

  • @Override 只能修饰方法

(2)演示
  • Father 类
package com.my.entity;

public class Father {
    public void sayHi() {
        System.out.println("Hello");
    }
}
  • Son 类
package com.my.entity;

public class Person {

    @Deprecated
    public void sayHi() {
        System.out.println("Hello");
    }
}
  • OverrideAnnotationTest 类
package com.my.test;

import com.my.entity.Son;

public class OverrideAnnotationTest {
    public static void main(String[] args) {
        Son son = new Son();
        son.sayHi();
    }
}
(3)源码
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
2、@Deprecated
(1)基本介绍
  • 用于表示某个元素已过时,可以修饰类,构造器,方法等

  • 被修饰的元素仍然可以被使用,可以做版本升级过渡

(2)演示
  • Person 类
package com.my.entity;

public class Person {

    @Deprecated
    public void sayHi() {
        System.out.println("Hello");
    }
}
  • DeprecatedAnnotationTest 类
package com.my.test;

import com.my.entity.Person;

public class DeprecatedAnnotationTest {
    public static void main(String[] args) {
        Person person = new Person();
        person.sayHi();
    }
}
(3)源码
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
3、@SuppressWarnings
(1)基本介绍
  • 用于抑制编译器警告,作用范围取决于注解位置
抑制类型说明
all所有警告
unchecked没有检查的警告
rawtypes没有指定泛型的警告
unused没有使用某个变量的警告
(2)演示
  • SuppressWarningsTest 类
package com.my.test;

public class SuppressWarningsTest {
    
    @SuppressWarnings({"unused"})
    public static void main(String[] args) {
        int i;
        System.out.println("Hello World");
    }
}
(3)源码
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
    String[] value();
}

三、元注解概述

  • 用于修饰其他注解,学习元注解的作用更多的是为了更好的理解源码

四、四种元注解

1、@Retention
  • 用于修饰一个注解可以保留的情况
保留情况说明
RetentionPolicy.SOURCE编译器使用后,直接丢弃注解
RetentionPolicy.CLASS编译器将注解记录在 class 文件中
当运行 Java 程序时,JVM 不会保留注解(默认情况)
RetentionPolicy.RUNTIME编译器将注解记录在 class 文件中
当运行 Java 程序时,JVM 会保留注解,程序可通过反射获取该注解
2、@Target
  • 用于指定被修饰的注解能用于修饰哪些元素
3、@Documented
  • 用于指定被修饰的注解将被 javadoc 命令提取成文档
4、@Inherited
  • 被修饰的注解将具有继承性,如果某个类使用了被 @Inherited 修饰的注解,则其子类将自动具有该注解

标签:Java,my,class,修饰,注解,com,public,四种
From: https://blog.csdn.net/weixin_52173250/article/details/143815949

相关文章

  • JavaScript判断用户设备类型:PC端与移动端的区分方法
    在JavaScript中,可以通过检查用户代理字符串(UserAgentString)来判断用户设备类型,即访问网站的是PC端还是移动端设备。用户代理字符串是浏览器在发送HTTP请求时附带的一段信息,它包含了浏览器类型、版本、操作系统以及设备类型等信息。以下是一个简单的示例代码,用于判断用户......
  • 一文详解Java反射技术
    Java反射什么是Java反射以及引出反射的背景?Class类如何获取一个class的Class实例Class类的使用获取属性获取调用方法获取注解信息获取构造方法反射的应用什么是Java反射以及引出反射的背景?Java程序中的对象有两种类型,编译时类型和运行时类型,而很多时候编译......
  • Java反序列化-Commons Collections3利用链分析详解
    介绍CC3与CC1和CC6的主要区别在于,CC1和CC6依赖反射机制来执行Runtime.getRuntime().exec()等危险命令,而如果服务器将这些方法列入黑名单,这两种方式就会失效。相比之下,CC3通过类加载器动态加载恶意类来执行危险函数,绕过黑名单限制,从而达到命令执行的目的。公众号:T......
  • java笔试题
    请指出下面程序的运行结果(62)publicclassTest{publicstaticvoidmain(String[]args){System.out.println(test());}publicstaticinttest(){try{return2;}catch(Exceptione){return4;......
  • 前端必知必会-JavaScript if、else 和 else if
    文章目录JavaScriptif、else和elseif条件语句if语句else语句elseif语句总结JavaScriptif、else和elseif条件语句用于根据不同的条件执行不同的操作。条件语句编写代码时,您经常希望针对不同的决策执行不同的操作。您可以在代码中使用条件语句来执行......
  • 前端必知必会-JavaScript Switch 语句
    文章目录JavaScriptSwitch语句JavaScriptSwitch语句break关键字default关键字常见代码块switch详细信息严格比较总结JavaScriptSwitch语句switch语句用于根据不同的条件执行不同的操作。JavaScriptSwitch语句使用switch语句从多个代码块中选择一个......
  • java根据时区转换获取时间的方法
    方法一:publicstaticvoidmain(String[]args){//假设这是从MySQL获取的UTC时间字符串StringutcTimeStr="2024-09-30T16:00:00Z";try{//解析UTC时间字符串DateTimeparsedDateTime=DateUtil.parse(utcTimeStr......
  • Java Web 过滤器和拦截器.
    概念过滤器即Servlet过滤器,参见Servlet过滤器入门示例。拦截器(Interceptor)通常是由特定的框架提供的,不是JavaEE标准的一部分。Spring提供了多种类型的拦截器,如方法拦截器(MethodInterceptor)和控制器拦截器(HandlerInterceptor)。方法拦截器可以用于AOP(面向切面编程),而控......
  • javaScript交互补充3(JSON数据)
    3.1、JSON(1)、定义:JSON数据格式JavaScriptObjectNotation缩写即js对象表示法由于JS中的对象只有JS自己认识,其他的语言都不认识,所以引入了JSON,JSON就是一个特殊格式的字符串,这个字符串可以被任意的语言所识别,并且可以转换为任意语言中的对象,JSON在开发中主要用来数据的......
  • javaScript交互补充4(本地存储)
    localstorage、Sessionstorage是WebStorage,H5的本地存储机制。是本地存储,存储在客户端,以键/值对的形式存储的,通常以字符串存储。是针对HTML4中Cookie存储机制的一个改善,由于Cookie存储机制有很多缺点,HTML5不再使用它,转而使用改良后的WebStorage存储机制。4.1、Cookie(1......