java基础-注解Annotation原理和用法
在很多java代码中都可以看到诸如@Override、@Deprecated、@SuppressWarnings这样的字符,这些就是注解Annotation。注解最早在jdk5中被引入,现在已经成为java平台很重要的一部分了,很多的框架程序中也喜欢使用注解,如Spring、Mybatis等。
- @Target;
- @Retention;
- @Inherited;
- @Documented;
- CONSTRUCTOR:用于描述构造器;
- FIELD:用于描述域;
- LOCAL_VARIABLE:用于描述局部变量;
- METHOD:用于描述方法;
- PACKAGE:用于描述包;
- PARAMETER:用于描述参数;
- TYPE:用于描述类、接口、注解类型或枚举;
@Target(ElementType.TYPE)
public @interface Exculde{
/**
* 名称,默认值为""
* @return
*/
public String name() default "";
} @Target(ElementType.FIELD)
public @interface Inject{
/**
* id,默认值为""
* @return
*/
public String id() default ""; /**
* 类,默认值为""
* @return
*/
public Class clazz() default Object.class; }
@Exculde(name="admin")
public class User{
@Inject(id="username",clazz=String.class)
private String username;
}
- SOURCE:源码文件中保留;
- CLASS:class文件中保留;
- RUNTIME:运行时保留;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Exculde{
/**
* 名称注解,默认值为""
* @return
*/
public String name() default "";
}
- 基本类型;
- Class;
- String;
- Enum;
- Annotation;
- 以上所有类型的数组形式;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Inject{
/**
* ID,默认值为""
* @return
*/
public String id() default ""; /**
* 类,默认值为""
* @return
*/
public Class clazz() default Object.class; }
public class UserAction {
@Inject(id="userService",clazz=UserService.class)
private UserService userService;
}
Inject inject = field.getAnnotation(Inject.class);
String id = inject.id();
Class clazz = inject.clazz(); Object userService = Class.forName(clazz.getName).newInstance();
field.setAccessible(true);
field.set(object,userService);
java基础-注解Annotation原理和用法的更多相关文章
- java基础—注解annotation
一.认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts ...
- Java基础--注解Annotation
Annotation是给类,方法或域上加的一种特殊的标记,可以通过反射取到注解的类型和值,从而完成某种特定的操作. 定义注解需要使用元注解,元注解有@Retention和@Target //@Rete ...
- Java 基础 —— 注解 Annotation
简介 Annotation 是从 JDK 5.0 引入的. 注解使得我们可以以编译器验证的格式存储程序的额外信息.注解可以生成描述符文件,甚至是新的类定义,并且有助于减轻编写"样板" ...
- Java基础 | Stream流原理与用法总结
Stream简化元素计算: 一.接口设计 从Java1.8开始提出了Stream流的概念,侧重对于源数据计算能力的封装,并且支持序列与并行两种操作方式:依旧先看核心接口的设计: BaseStream: ...
- Java基础笔记 – Annotation注解的介绍和使用 自定义注解
Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 | 被围观 25,969 views+ 1.Anno ...
- Java Android 注解(Annotation) 及几个常用开源项目注解原理简析
不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...
- 再探java基础——break和continue的用法
再探java基础——break和continue的用法 break break可用于循环和switch...case...语句中. 用于switch...case中: 执行完满足case条件的内容内后 ...
- Java并发-volatile的原理及用法
Java并发-volatile的原理及用法 volatile属性:可见性.保证有序性.不保证原子性.一.volatile可见性 在Java的内存中所有的变量都存在主内存中,每个线程有单独CPU缓存内存 ...
- Java:注解Annotation(元数据)
本文内容: 注解Annotation的介绍 基本注解的用法 自定义注解 首发日期:2018-07-28 注解Annotation的介绍 Annotation是代码中的特殊标记,能够在编译.类加载.运行 ...
随机推荐
- tachyon 命令行接口
Usage: tachyon COMMAND where COMMAND is one of: format [-s] 格式化Format Tachyon (如果指定 -s 参数,表示在 underf ...
- itextsharp去掉PDF加密
在操作PDF文件时会遇到PDF文件加密了,不能操作的问题,从网络中查找资料一上午,鼓捣出如下的代码,可实现将已加密的PDF转化成未加密的PDF文件,纯代码,无需借助PDF解密软件,使用前需要导入如下引 ...
- iOS 左右滑动 手势 响应方法
1. @property (nonatomic, strong) UISwipeGestureRecognizer *leftSwipeGestureRecognizer; @property (no ...
- 6. Android框架和工具之 JSON解析
Android进阶笔记17:3种JSON解析工具(org.json.fastjson.gson)
- 一步步搭建自己的轻量级MVCphp框架-(四)一个国产轻量级框架Amysql源码分析(3) 总进程对象
AmysqlProcess类,框架的总进程对象 ./Amysql/Amysql.php 下面还是和以前一样,先上代码~ class AmysqlProcess { public $AmysqlCont ...
- Part 11 string functions in sql server
Built in string functions in sql server 2008 LEFT, RIGHT, CHARINDEX and SUBSTRING functions in sql s ...
- 从ASP.NET的web1子界面刷新打开web1的web0父界面
单击web0界面的按钮bt1触发一下代码: protected void btnSave_Click(object sender, EventArgs e) { string parentJs = @ ...
- SQL循环
加群学习:457351423 这里有4000多部学习视频,有需要的欢迎进群学习! declare @temp Table ( nf varchar(50), yf varchar(50), sm va ...
- Linux 基本命令学习笔记
1. 文件管理 Ø touch 新建文件.例: touch test.txt 新建一个test.txt 文件. Ø cp 复制文件.例:cp ./user_one/test_one ./user ...
- vim 高级使用技巧
前言:逃离windows有很长时间了,特别是当今android盛行的时代,我们没有理由不选择ubuntu作为编译开发android之首选.其实操作系统只是我们使用的一个工具, windows也好lin ...