`
jiangxia207
  • 浏览: 2444 次
社区版块
存档分类
最新评论

Java自定义注解的个人理解

阅读更多
就网上看到的一些例子,个人感觉难点在于注解类定义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创建和使用自定义注解,包括使用元注解,反射,处理器等。

    src.zip Java的注解讲解案例代码( 元注解、自定义注解、常用内置注解等)

    Java提供了许多内置注解,同时也支持自定义注解。 适用人群: Java注解适用于所有使用Java编程语言的开发者。不论是开发框架、库,还是进行特定行为的配置和处理,都可以从使用注解中获益。 使用场景: 以下是一些...

    java中元注解及实列

    Java 注释有助于提供一种系统方法,以 Java 编译器和 JVM 可以理解、测试和验证的功能方式为特定代码添加额外信息。注解是一项极其强大的新功能,首次添加到 Java 5 中。Java 提供了一些预定义的注释,但我们也可以...

    使用java注解.doc

    注解在Java编程中会变得越来越重要越来越常用,从EJB 3.0和JUnit 4可以看出这种趋势来,所以理解和掌握注解的使用是非常有必要的。下面这个程序自定义了两个注解,然后将注解中的信息打印出来,使用下面的代码也可以...

    java或Java框架中常用的注解及其作用详解_资料.docx

    java或Java框架中常用的注解及其作用详解:Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过...

    Java枚举类的使用与注解

    1.枚举类的理解:类的对象只有有限个,确定的。我们称此为枚举类 2.当需要定义一组常量时,强烈建议使用枚举类。 3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式。 二、如何定义枚举类 方式一:Jdk5.0...

    java7源码-Android-Annotation-Study:Android注解生成代码

    了解这方面的知识有助于我们深入理解一些框架,下面就以模仿AndroidAnnotations中三个注解特性来详细说明。 注解布局文件,@EActivity(layout_id); 注解控件,@ViewById; Activity初始化,@AfterViews。 定义一个...

    minboo#JavaSE#2.注解的使用1

    1. 注解的理解 2. 注解的使用示例 3. 如何自定义注解:参照@SuppressWarnings定义 4. 元注解 :对现有的注解进行解释说明的注解 5.

    观看韩顺平学习整理java的笔记到异常

    注解的理解 16 基本的 Annotation 介绍 16 @Override 注解 16 @Override 使用说明 17 @Deprecated 注解 17 @SuppressWarnings 注解 17 元注解 19 @Retention 注解 19 @Target 注解 19 @Documented注解 20 @Inherited...

    JAVA上百实例源码以及开源项目源代码

    Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP  Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...

    JAVA上百实例源码以及开源项目

    Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP  Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件...

    java7源码-AnnotationDemo:Android/Java编译时注解处理Demo。用于自动生成工厂代码

    在Java中,一个自定义的注解看起来是类似下面这样子的: @Retention(RetentionPolicy.CLASS) @Target(ElementType.TYPE) public @interface Factory { String value() default ""; } 该注解用于编译时使用,生命周期...

    Spring容器的通俗理解及简单写法

    Spring容器的通俗理解及简单写法 手动写一个非常粗犷且简单的IOC容器。 用到了java的一些基础知识,比如说读取文件资源,反射,自定义注解的实现及使用等

    通过提问ChatGPT来解决枚举和注解等需求问题

    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(元注 解,...

    java基础案例与开发详解案例源码全

    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 功能描述...

    java开源包4

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包101

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包11

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包6

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

    java开源包9

    最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就...

Global site tag (gtag.js) - Google Analytics