java自定义注解以及注解的简单介绍

jdk自带注解

@Override 覆盖父类的方法

@Deprecated  注解一个方法 表示该方法过时了

@Suppvisewarnings     @SupressWarnings("deprecation")//忽略警告

常见第三方注解

Spring:

@Autowired   自动生成一个类的实例

@Service

@Repository

Mybatis:

@InsertProvider

@UpdateProvider

@Options

注解的分类

运行机制化分

源码注解 注解只在源码中出现 class文件就没有了

编译注解  在源码和.class 文件中都存在

运行注解  运行阶段起作用 影响程序的运行逻辑

来源来分

jdk注解

第三方的注解

自定义的注解

元注解 注解的注解

自定义注解

语法要求

元注解

@Target(ElementType.METHOD,ElementType.TYPE) //注解的作用域 可以用在 CONSTRUCTOR构造方法声明 FIELD字段声明 LOCAL_VARIABLE局部变量 METHOD方法声明 PACKAGE包声明 PARAMETER参数声明 TYPE类接口

@Retention(RetentionPolicy.RUNTIME) 生命周期SOURCE 在源码时显示 编译被丢弃  CLASS 编译时记录到class中,运行时忽略 RUNTIME 运行时存在,可以通过反射获取

@Inherited   允许子类继承  继承只会继承类上面的注解 不会继承方法上的注解

@Documented  生成javadoc包含注解信息

public @interface Description{

String desc();

String author();

int age() default 18;

}

使用@interface关键字定义注解

成员以无参无异常方式声明

可以用defalut成员指定默认值

成员类型包括原始类型 以及String class Annotation Enumeration

如果注解只有一个成员,则成员名必须取名为value() ,在使用时可以忽略成员名和赋值号=

注解类可以没有成员 成为标识注解

使用注解

@Description(desc="gac",autor="gac1",age=18)

public String eyeColor(){

return "red";

}

解析注解

通过反射获取类,函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑

public class ParseAnn{

//使用类加载器加载类 获得类上的注解

try{

Class c = Class.forName("com.ann.test.Child");//这个类使用了定义的注解

//2.找到类上面的注解

boolean isExists = c.isAnnotationPresent(Description.class);

if(isExits){

//拿到注解实例

Description d = (Description)c.getAnnotation(Description.class);

System.out.println(d.value());

}

//找到方法上的注解

Method[] ms = c.getMethods();

for(Method m:ms){

boolean isMExits = m.isAnnotationPresent(Description.class);

if(isMExits){

Description d = (Description)m.getAnnotation(Description.class);

System.out.println(d.value());

}

}

//另外一种解析方法

for(Method m : ms){

Annotation[] as = m.getAnnotations();

for(Annotation a:as){

if(a instanceof Description){

Description d = (Description)a;

System.out.println(d.value());

}

}

}

}catch(ClassNotFoundException e){

e.printStackTrace();

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-08 21:44:41

java自定义注解以及注解的简单介绍的相关文章

java中equals以及==的用法(简单介绍)

简单介绍 equals方法是java.lang.Object类的方法 有两种用法说明: 一.对于字符串变量来说,使用"=="和"equals()"方法比较字符串时,其比较方法不同. 1."=="比较两个变量本身的值,即两个对象在内存中的首地址. (java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各

java自带数据库Derby的简单介绍

前言: 如果你急需一个数据库来测试你的sql,那么java自带这个轻量级的数据库是个不错的选择. 正文: Java Derby的执行文件在C:\Program Files\Java\jdk1.8.0_91\db\bin目录下 在该目录下可以使用startNetworkServer.bat文件启动数据库 如果启动过程中报日志文件无法创建,可以给当前目录调整成完全控制权限. 另外,在该数据库创建一个自己的私有库,可以通过使用ij工具,执行如下命令创建 connect 'jdbc:derby://lo

自定义验证规则以及中间件简单介绍

1.python2和python3中的区别 对于python2内置的字符串类型有str和unicode 比如:"abc"是字符串,u"你好"是unicode 字符串(utf-8/gbk编码之后值) unicode 对于python3内置的字符串类型有bytes和unicode bytes(utf-8/gbk编码之后值) 字符串(unicode) python3 中的bytes(也就是utf-8/gbk编码之后的值)就是python2中的字符串 python3 中的字

java集合第一节,List简单介绍

List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来. package 集合; import java.util.ArrayList; import java.util.Iterator; /* * List接口特点: * 1.有序的集合,存储顺序和取出顺序一致 * 2.有索引,包含索引方法 * 3.允许存储重复元素 * 4.List接口带的方法特有 * 注意事项:操作索引的时候,一定要防止索引越界异常 * IndexOutBoundExce

java GUI编程(swing)之一 swing简单介绍

swing 是由sun公司开发的一个gui框架,一开始sun是开发了awt框架.但是awt框架 存在lcd问题.因此sun在awt的基础上继续开发出了swing. swing是继承了awt的类 swing 常用组件: text 文本组件 menus 菜单组件 widgets 小控件组件 top-level-windows顶层窗口管理 sub-windows 子窗口 原文地址:https://www.cnblogs.com/SunshineLittleCat/p/8279905.html

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自定义注解学习(二)_注解详解

上篇文章,我们简单的实现了一个自定义注解,相信大家对自定义注解有了个简单的认识,这篇,这样介绍下注解中的元注解和内值注解 整体图示 内置注解 @Override 重写覆盖 这个注解大家应该经常用到,主要在子类重写父类的方法,比如toString()方法 package com.kevin.demo; public class Demo1 { @Override public String toString(){ return "demo1"; } } @Deprecated 过时 @D

mybatis对java自定义注解的使用——入门篇

最近在学习spring和ibatis框架. 以前在天猫实习时做过的一个小项目用到的mybatis,在其使用过程中,不加思索的用了比较原始的一种持久化方式: 在一个包中写一个DAO的接口,在另一个包里面写DAO的实现,使用sqlMapClient来从***-sql.xml中读取相应的sql. public interface IBaseDaoiBatis { Object get(String statementName); } public class BaseDaoiBatis impleme

Java自定义注解Annotation详解

注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事.标记可以加在包,类,字段,方法,方法的参数以及局部变量上. 自定义注解及其应用 1).定义一个最简单的注解 public @interface MyAnnotation { //...... } 2).把注解加在某个类上: @MyAnnotation public class Annot