就网上看到的一些例子,个人感觉难点在于注解类定义Target的作用范围与使用该类的方式,再就是使用类给注解赋值
(1)使用Target时的位置
Target的作用范围有7个,如下:
1. CONSTRUCTOR:用于描述构造器
2. FIELD :用于描述域
3. LOCAL_VARIABLE 用于描述局部变量
4. METHOD :用于描述方法
5. PACKAGE :用于描述包
6. PARAMETER :用于描述参数
7. TYPE :用于描述类、接口(包括注解类型) 或enum声明。
如果Target定义范围为FIELD,如下:
@Target({ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
String value();
}
那么使用该类的话,只能对字段使用。
public class aaaaa {
@Column("aaa")
private int stuId;
}
如果Target定义范围为TYPE,如下:
@Target({ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
String value();
}
那么使用该类的话,只能对类使用,且在类之前声明。
@Column("aaa")
public class aaaaa {
private int stuId;
}
别的几种情况就不一一举例了。
(2)使用注解时赋初值
如果只有一个参数,则默认要用value(),如下
@Target({ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
String value();
}
public class Filter {
@Column("id")
private int stuId;
}
"id"可以由下面代码获取
Column column = field.getAnnotation(Column.class);
String columnName = column.value();
如果有多个参数,则可以使用自定义的函数名,如下
@Target({ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
String value1();
String value2();
}
public class Filter {
@Column(value1="aaa",value2="aa")
private int stuId;
}
两个赋值可以由下面代码获取
Column column = field.getAnnotation(Column.class);
String columnName1 = column.value1();
String columnName2 = column.value2();
总结:动态获取的例子目前只是以Filed作为例子,还可以以构造器,类型的注解来动态获取,可以参考http://knight-black-bob.iteye.com/blog/2229834
分享到:
相关推荐
注解+自定义注解+元注解+理解 - 本资源是一个注解的理解,解释了注解的作用和分类,以及如何用Java创建和使用自定义注解,包括使用元注解,反射,处理器等。
Java提供了许多内置注解,同时也支持自定义注解。 适用人群: Java注解适用于所有使用Java编程语言的开发者。不论是开发框架、库,还是进行特定行为的配置和处理,都可以从使用注解中获益。 使用场景: 以下是一些...
Java 注释有助于提供一种系统方法,以 Java 编译器和 JVM 可以理解、测试和验证的功能方式为特定代码添加额外信息。注解是一项极其强大的新功能,首次添加到 Java 5 中。Java 提供了一些预定义的注释,但我们也可以...
注解在Java编程中会变得越来越重要越来越常用,从EJB 3.0和JUnit 4可以看出这种趋势来,所以理解和掌握注解的使用是非常有必要的。下面这个程序自定义了两个注解,然后将注解中的信息打印出来,使用下面的代码也可以...
java或Java框架中常用的注解及其作用详解:Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过...
1.枚举类的理解:类的对象只有有限个,确定的。我们称此为枚举类 2.当需要定义一组常量时,强烈建议使用枚举类。 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 二、如何定义枚举类 方式一:Jdk5.0...
了解这方面的知识有助于我们深入理解一些框架,下面就以模仿AndroidAnnotations中三个注解特性来详细说明。 注解布局文件,@EActivity(layout_id); 注解控件,@ViewById; Activity初始化,@AfterViews。 定义一个...
1. 注解的理解 2. 注解的使用示例 3. 如何自定义注解:参照@SuppressWarnings定义 4. 元注解 :对现有的注解进行解释说明的注解 5.
注解的理解 16 基本的 Annotation 介绍 16 @Override 注解 16 @Override 使用说明 17 @Deprecated 注解 17 @SuppressWarnings 注解 17 元注解 19 @Retention 注解 19 @Target 注解 19 @Documented注解 20 @Inherited...
Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...
Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...
在Java中,一个自定义的注解看起来是类似下面这样子的: @Retention(RetentionPolicy.CLASS) @Target(ElementType.TYPE) public @interface Factory { String value() default ""; } 该注解用于编译时使用,生命周期...
Spring容器的通俗理解及简单写法 手动写一个非常粗犷且简单的IOC容器。 用到了java的一些基础知识,比如说读取文件资源,反射,自定义注解的实现及使用等
11.12注解的理解 11.13基本的Annotation介绍 11.14基本的Annotation应用案例 11.14.1@Over ide注解的案例 11.14.2@Deprecated注解的案 例 11.14.3@Suppress Warnings 注解的案例 11.15J DK的元Annotation(元注 解,...
16.3 自定义注解类型433 16.4 对注解进行注解435 16.4.1 目标Target435 16.4.2 类型Retention436 16.4.3 文档Documented437 16.4.4 继承Inherited437 16.5 利用反射获取注解信息438 16.6 上机练习440 17.1 功能描述...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...
最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...