Java注解简单使用实例解析
作为java开发的IDE,idea的2020 社区办还是比较好用的,比2018版的改进不少。
一个java注解的简单例子
package main; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface TestAno { enum DOMAIN{ AA, BB; public String call(String msg){ return msg + " is called"; } } DOMAIN type(); }
调用注解的例子
package main; @TestAno(type = TestAno.DOMAIN.AA) public class CallAno { public static void main(String[] args) { TestAno ano = CallAno.class.getAnnotation(TestAno.class); System.out.println(ano.type()); // AA System.out.println(TestAno.DOMAIN.AA.call("test")); // test is called } }
RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
@Target:注解的作用
- @Target(ElementType.TYPE) //接口、类、枚举
- @Target(ElementType.FIELD) //字段、枚举的常量
- @Target(ElementType.METHOD) //方法
- @Target(ElementType.PARAMETER) //方法参数
- @Target(ElementType.CONSTRUCTOR) //构造函数
- @Target(ElementType.LOCAL_VARIABLE)//局部变量
- @Target(ElementType.ANNOTATION_TYPE)//注解
- @Target(ElementType.PACKAGE) ///包
- @Inherited:说明子类可以继承父类中的该注解
注解也可用于一些解耦的应用,框架去调用接口的多个实现类。实现类的类名和路径可能会变,只要注解不变。对框架来说是没变的,框架的逻辑可以不变。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Java8新增的重复注解功能示例
本文实例讲述了Java8新增的重复注解功能.分享给大家供大家参考,具体如下: 一 点睛 在Java 8以前,同一个程序元素前最多只能使用一个相同类型的Annotation:如果需要在同一个元素前使用多个相同类型的Annotation,则必须使用Annotation"容器". 为了将该注解改造成重复注解,需要使用@Repeatable修饰该注解,使用@Repeatable时必须为value成员变量指定值. 二 实战 1 定义重复注解 import java.lang.annotation
-
Java注解的Retention和RetentionPolicy实例分析
本文实例讲述了Java注解的Retention和RetentionPolicy.分享给大家供大家参考,具体如下: 一 源码赏析 1 源码 @Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Retention { RetentionPolicy value(); } public enum RetentionPolicy { //此注解类型的信
-
Java对象转json JsonFormat注解
写在前面,首先,我用的java转json序列化的工具是java开源的jackson. 今天在做后端接口的时候,发现获取的json对象中少了几个属性,因为其他的接口都能得到正确的json,所以很快就找到了问题所在,先上代码 public class ChargeDto implements Serializable { private static final long serialVersionUID = -4617215025083571608L; protected Integer cId;
-
Java注解@Transactional事务类内调用不生效问题及解决办法
@Transactional 内部调用例子
-
Java使用自定义注解实现为事件源绑定事件监听器操作示例
本文实例讲述了Java使用自定义注解实现为事件源绑定事件监听器操作.分享给大家供大家参考,具体如下: 一 定义注解 import java.lang.annotation.*; import java.awt.event.*; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface ActionListenerFor { // 定义一个成员变量,用于设置元数据 // 该listener成员变
-
Java使用自定义注解实现函数测试功能示例
本文实例讲述了Java使用自定义注解实现函数测试功能.分享给大家供大家参考,具体如下: 一 自定义注解 使用@interface定义Annotation 使用Annotation修饰程序中的类.方法.变量.接口等定义,通常我们会把Annotation放在所有修饰符之前. 定义带成员变量的Annotation. 为Annotation的成员变量指定初始值. 二 提取Annotation Annotation接口来代表程序元素前面的注释,该接口是所有Annotation类型的父接口. Annotat
-
Java基于反射机制实现全部注解获取的方法示例
本文实例讲述了Java基于反射机制实现全部注解获取的方法.分享给大家供大家参考,具体如下: 一 代码 class Info{ //给mytoString方法加了2个内建Annotation @Deprecated @SuppressWarnings(value = "This is a waring!") public String mytoString(){ return "hello world"; } } class GetAnnotations{ publi
-
java获取包下被指定注解的类过程解析
方案一: 采用reflections 框架(此框架依赖com.google.guava) 1.reflections框架地址:https://github.com/ronmamo/reflections 2.项目依赖 <dependency> <groupId>org.reflections</groupId> <artifactId>reflections</artifactId> <version>0.9.11</versi
-
Java注解简单使用实例解析
作为java开发的IDE,idea的2020 社区办还是比较好用的,比2018版的改进不少. 一个java注解的简单例子 package main; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(Ret
-
Java Web开发入门书籍实例解析(总结一)
从事Java Web开发这一段时间来,对Java 面向对象的思想和MVC开发模式可以说已经熟悉了.我当前参与的项目使用的框架是Spring.SpringMVC.Hibernate.下面我们小编给大家整理一篇教程帮助大家学习javaweb相关知识,感兴趣的朋友可以参考下. 一.基本概念 1.1.WEB开发的相关知识 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资源分为: 1.静态web资源(如html 页面):指w
-
Java数组越界问题实例解析
Java中数组初始化和OC其实是一样的,分为动态初始化和静态初始化, 动态初始化:指定长度,由系统给出初始化值 静态初始化:给出初始化值,由系统给出长度 在我们使用数组时最容易出现的就是数组越界问题,好了,这里有个简单的例子 int [][] array = {{1,2,3},{1,4}}; System.out.println(array[1][2]); 这是一个二维数组,很明显,数组越界了,控制台中会打印如下信息: Exception in thread "main" java.l
-
Java多线程回调方法实例解析
所谓回调,就是客户程序C调用服务程序S中的某个方法A,然后S又在某个时候反过来调用C中的某个方法B,对于C来说,这个B便叫做回调方法. 下面看一个实际例子来理解: 本示例设置一个提问者,一个回答者,而回答者需要回答提问者一个很深奥的问题时,这时需要很多时间去查找,提问者又开始做其他的事情, 等回答者找到答案后,再把答案告诉提问者. 一.提问者的类 涉及到长时间的思考,要sleep,要继承Thread package com.xykj.thread; public class XiaoZhang
-
java编程多线程并发处理实例解析
本文主要是通过一个银行用户取钱的实例,演示java编程多线程并发处理场景,具体如下. 从一个例子入手:实现一个银行账户取钱场景的实例代码. 第一个类:Account.java 账户类: package cn.edu.byr.test; public class Account { private String accountNo; private double balance; public Account(){ } public Account(String accountNo,double
-
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
制作效果图如下: 代码如下(以后做东西可以改改就能直接用): <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport"
-
java线程的基础实例解析
java中建立线程可以有两种方式,分别是继承Thread类和实现Runnable接口. 继承Thread public class MyThread extends Thread{ public MyThread(String name){ super(name); } int i; public void run(){ for(i=0;i<5;i++){ System.out.println(getName()+"--"+i); } } public static void m
-
Java中后台线程实例解析
本文研究的主要是Java中后台线程的相关问题,具体介绍如下. 以前从来没有听说过,java中有后台线程这种东西.一般来说,JVM(JAVA虚拟机)中一般会包括俩种线程,分别是用户线程和后台线程.所谓后台线程(daemon)线程指的是:在程序运行的时候在后台提供的一种通用的服务的线程,并且这种线程并不属于程序中不可或缺的部分.因此,当所有的非后台线程结束的时候,也就是用户线程都结束的时候,程序也就终止了.同时,会杀死进程中的所有的后台线程.反过来说,只要有任何非后台线程还在运行,程序就不会结束.不
-
java抛出异常与finally实例解析
这篇文章主要介绍了java抛出异常与finally实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下: package test1; public class EmbededFinally { public static void main(String args[]) { int result; try { System.out.println("in Level 1"); try { System.out.print
-
Java编程guava RateLimiter实例解析
本文主要研究的是Java编程guava RateLimiter的相关内容,具体如下. 令牌桶算法(token bucket algorithm) 场景1 在流量监管中的应用 约定访问速率(CAR)是流量监管常用技术之一,可以应用在端口进和出方向,一般应用在入方向,它的监管原理如图1所示. a. 按特定的速率向令牌桶投放令牌 b. 根据预设的匹配规则先对报文进行分类,不符合匹配规则的报文不需要经过令牌桶的处理,直接发送: c. 符合匹配规则的报文,则需要令牌桶进行处理.当桶中有足够的令牌则报文可以
随机推荐
- 介绍PostgreSQL中的Lateral类型
- JQuery中Ajax()的data参数类型实例分析
- Vue常用指令V-model用法
- 文本框获得焦点和失去焦点的判断代码
- Java实现拖拽文件上传dropzone.js的简单使用示例代码
- 动态CSS,换肤技术
- 详解C++中的一维数组和二维数组
- php实现遍历文件夹的方法汇总
- PHP培训要多少钱
- python的类方法和静态方法
- 在Linux下用 mkdir 命令来创建目录和子目录的用法
- 基于jquery实现复选框全选,反选,全不选等功能
- JavaScript基本语法讲解
- PHP实现的数独求解问题示例
- java之swing实现复选框的方法
- Java环境配置与编译运行详解
- SpringMVC的简单传值(实现代码)
- Android Zxing二维码扫描图片拉伸问题的解决方法
- 判断checkbox选择的个数 多浏览器
- php检测url是否存在的方法