Java基础:注解

这篇具有很好参考价值的文章主要介绍了Java基础:注解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注解的理解和类型

java注解-最通俗易懂的讲解
廖雪峰java注解
对注解(Annotation)最直接的理解是,注解本身就相当于一个附加信息,这个附加信息并不会对原有的类,方法等进行处理,进行处理的应该是对附加信息进行处理的方法,这些方法根据附加信息进行进一步处理

注解可分为三类:

  1. 由编译器使用的注解:(编译时使用,编译后扔掉)
    • @Override:让编译器检查该方法是否正确地实现了覆写;
    • @SuppressWarnings:告诉编译器忽略此处代码产生的警告。
  2. 工具处理.class文件使用的注解,这些工具加载class对class做动态修改,实现特殊功能,但加载结束不会存在于内存。一般不用我们自己处理
  3. 程序运行期间能够读取的注解,加载后一直存在于JVM中。这一类注解是由自己编写的java代码进行处理,而不是JVM自动识别处理

元注解

  • Retention: 表示注解的存活时间
    • RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视。
    • RetentionPolicy.CLASS 注解只被保留到编译进行的时候,它并不会被加载到 JVM 中。
    • RetentionPolicy.RUNTIME 注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。
  • Documented:够将注解中的元素包含到 Javadoc 中去。
  • Target: 定义注解应用在源码的位置
    • 类或接口:ElementType.TYPE;
    • 字段:ElementType.FIELD;
    • 方法:ElementType.METHOD;
    • 构造方法:ElementType.CONSTRUCTOR;
    • 方法参数:ElementType.PARAMETER。
  • Inherited:如果一个超类被 @Inherited 注解过的注解进行注解的话,那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。

注解的定义

使用@interface定义注解

@Target(ElementType.TYPE)
@Rentation(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
	int id() default -1;
	String msg() default "hi";
}

注解只有成员变量,没有方法,成员变量的定义是无形参方法来声明。使用default指定默认值(推荐)

赋值方法&使用方法

@TestAnnotation(id=3, msg="hello annotation")
public class Test {
}

//使用默认值
@TestAnnotation()
public class Test {
}

其他:

  • 还有一种情况。如果一个注解内仅仅只有一个名字为 value 的属性时,应用这个注解时可以直接接属性值填写到括号内
  • 一个注解没有任何属性,那么在应用这个注解的时候,括号都可以省略。

注解的处理

//判断是否应用某个注解(注解为annotationClass)
public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass) {}
//获取 Annotation 对象:返回指定类型注解
public <A extends Annotation> A getAnnotation(Class<A> annotationClass) {}
//获取Annotation对象:返回注解到这个元素上的所有注解
public Annotation[] getAnnotations() {}

处理案例代码文章来源地址https://www.toymoban.com/news/detail-702306.html

@TestAnnotation()
public class Test {
    public static void main(String[] args) {
        boolean hasAnnotation = Test.class.isAnnotationPresent(TestAnnotation.class);
        if ( hasAnnotation ) {
            TestAnnotation testAnnotation = Test.class.getAnnotation(TestAnnotation.class);
            System.out.println("id:"+testAnnotation.id());
            System.out.println("msg:"+testAnnotation.msg());
        }
    }
}

到了这里,关于Java基础:注解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java注解开发

    注解提供了更声明式和方便的方式,而编码方式允许更精细的控制和定制。 在Java中,当Redis充当缓存时,使用注解的方式更为常见和方便。Spring Framework提供了一种基于注解的缓存机制,称为Spring Cache。通过在方法上添加注解,开发人员可以指定缓存的行为,例如缓存的名称

    2024年02月14日
    浏览(44)
  • JAVA使用反射机制和注解实现对信息的处理-----JAVA入门基础教程

    import java.lang.annotation.Annotation; import java.lang.reflect.Field; public class AnnotationTest { public static void main(String[] args) throws Exception { Class c = Class.forName(\\\"Customer\\\"); c = Customer.class; Table table = (Table)c.getDeclaredAnnotation(Table.class); System.out.println(table.value()); Annotation[] annotations = c.getDeclaredAnnotatio

    2024年02月15日
    浏览(44)
  • Spring-2-深入理解Spring 注解依赖注入(DI):简化Java应用程序开发

      掌握纯注解开发依赖注入(DI)模式 学习使用纯注解进行第三方Bean注入 问题导入 思考:如何使用注解方式将Bean对象注入到类中 1.1 使用@Autowired注解开启自动装配模式(按类型) 说明:不管是使用配置文件还是配置类,都必须进行对应的Spring注解包扫描才可以使用。@Autowired默

    2024年02月14日
    浏览(58)
  • 【Java高级语法】(十三)注解:解码程序设计中的元数据利器,在小小的@符里挖呀挖呀挖~用小小的注解做强大的开发...

    Java 注解(Annotation) 是Java语言中一种元数据形式,它提供了一种在代码中添加元数据的方式。注解为程序员提供了向代码中添加额外信息的能力,这些额外信息可以被编译器、工具或者运行时环境使用。 优点: 提供了一种 更加简洁和可读性强 的代码编写风格; 增强代码的

    2024年02月10日
    浏览(48)
  • java语言基础(有c语言基础)

    jdk+记事本编译 编译javac Hello.java 执行java Hello byte b=123;//整型8位最大值是2的7次减一,第一位是符号位 short s=32156;//最大是2的15次-1 int i=101;//31 long l=123;63 float s=3.14; double d=3.14; boolean ok=true; char c=\\\'a\\\'; 3.14默认double 在后面加f float s=3.14f; (F不区分大小写 java无符号 字符 可以赋值

    2024年02月16日
    浏览(40)
  • SSM框架的学习与应用(Spring + Spring MVC + MyBatis)-Java EE企业级应用开发学习记录(第五天)MyBatis的注解开发

    ​ 昨天我们深入学习了 MyBatis多表之间的关联映射,了解掌握了一对一关联映射,一对多关联映射,嵌套查询方式以及嵌套结果方式,掌握了缓存机制的一级缓存,二级缓存等概念,也使用了代码进行复现理解 。但是都是基于XML配置文件的方式来实现的,现在我们要学习一下

    2024年02月11日
    浏览(59)
  • 【Java入门合集】第二章Java语言基础(一)

    博主:命运之光 专栏:Java零基础入门 学习目标 掌握变量、常量、表达式的概念,数据类型及变量的定义方法; 掌握常用运算符的使用; 掌握程序的顺序结构、选择结构和循环结构的使用; 掌握数组的定义及使用方法; 掌握基本的输入输出方法; 提示:不要去强记

    2024年02月02日
    浏览(38)
  • 【Java基础学习打卡08】Java语言跨平台原理

    Java语言编程的一大优势便是跨平台,本文将介绍Java语言是如何实现跨平台的。 计算机高级语言按照程序的执行方式可以分为 编译型语言 和 解释型语言 。 编译型语言: 编写的程序源代码需要通过编译器生成机器语言目标文件,在计算机上直接执行目标文件。编译型语言的

    2024年02月09日
    浏览(40)
  • 【Java入门合集】第二章Java语言基础(三)

    博主:命运之光 专栏:Java零基础入门 学习目标 掌握变量、常量、表达式的概念,数据类型及变量的定义方法; 掌握常用运算符的使用; 掌握程序的顺序结构、选择结构和循环结构的使用; 掌握数组的定义及使用方法; 掌握基本的输入输出方法; Java中的语句有很多种形式

    2024年02月03日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包