知识大全 Annotation之ElementType.PACKAGE

Posted 文件

篇首语:守望相助,一缕阳光也将照亮心扉;同心协力,一点火光也能温暖灵魂。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Annotation之ElementType.PACKAGE相关的知识,希望对你有一定的参考价值。

Annotation之ElementType.PACKAGE  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Annotation的出现 给优美的Java再添加了更广阔的空间 让你可以设计出更加完美 更加叹为观止的程序

  项目关系 用到了这个东东在满天下泛滥的ElementType TYPE ElementType METHOD现在 Google下 就可以发现 用ElementType PACKAGE真的少得可怜

  正因为如此 写下此日志 给有需要的人一些参考 有关ElementType PACKAGE

  之前还是温习下ElementType的其它各个元素

  ElementType TYPE (class interface enum)

  ElementType FIELD (instance variable)

  ElementType METHOD

  ElementType PARAMETER

  ElementType CONSTRUCTOR

  ElementType LOCAL_VARIABLE

  ElementType ANNOTATION_TYPE (应用于另一个注解上)

  ElementType PACKAGE

  当一个Annotation接口被声明为

  @Target(value=ElementType PACKAGE)时 它即是对包的修饰注释 看下面的例子

  package xu ycoe navigator;

  import java lang annotation Documented;

  import java lang annotation ElementType;

  import java lang annotation Retention;

  import java lang annotation RetentionPolicy;

  import java lang annotation Target;

  @Target(value=ElementType PACKAGE ElementType TYPE ElementType METHOD)

  @Retention(RetentionPolicy RUNTIME)

  @Documented

  public @interface Navigator

  public String name();

  public String values();

  

  代码里用到的除了ElementType PACKAGE 其它的都很熟悉了吧 不再多说 不明的 自己Google下

  上面定义了一个可在包 类 接口 方法中使用的Annotation

  一般情况下 是这样应用的

  @Navigator(name= package values= 我在包里 )

  package xu ycoe navigator;

  @Navigator(name= class values= 我在类里 )

  public class NavigateManager

  @Navigator(name= method values= 我在方法里 )

  public void Test()

  

  OK 但是在Eclipse下会出现一个错误 Package annotations must be in file package info java可郁闷透了 在Eclipse下 无法直接创建package info java类 原因是类名不合法 晕哦~~~只好强行创建了 使用Eclipse下的新建文件(任意文本文件 把文件名改为package info java即可)

  文件的内容如下

  @Navigator(name= package values= 我在包里 ) package xu ycoe navigator;

  //如果这个包与Annotation不在同一包下时要import进来Annotation的包

  import xu ycoe navigator Navigator;好啦 包的注释是不能放在某一个类里面的 而是要在此包下面新建一个package info java文件 在那里面写注释

  OK 一切就序 没有报错了

  下面看看怎样使用吧

  其实很简单 直接使用java lang Package类就可以了 和类 方法中的Annotation使用完全一样

  Package p = Package getPackage( xu ycoe navigator );

  if(p!=null && p isAnnotationPresent(Navigator class))

  Navigator nav = p getAnnotation(Navigator class);

  if(nav !=null) System out println(nav values()+ ======================= +nav name());

  

  

  但是有一个地方要注意一下 Java的包不是一下子全部一起加载 而是在使用到的时候才去加载的

  这样 在使用Package getPackage(String name)的时候 如果这个包下的类还没有被加载过 就会直接返回一个null值 原因嘛 看看java源码

  Code

  public static Package getPackage(String name)

  ClassLoader l = ClassLoader getCallerClassLoader();

  if (l != null) return l getPackage(name);

   else

  return getSystemPackage(name);

  

  

  好了 这一点注意一下就没什么问题了

cha138/Article/program/Java/hx/201311/26731

相关参考

知识大全 java反射Annotation

java反射Annotation  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  importja

知识大全 使用Annotation设计持久层

使用Annotation设计持久层  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 Java Annotation入门

基础学习教程:JavaAnnotation入门  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘

知识大全 Hibernate(jpa)复合主键annotation声明方法

Hibernate(jpa)复合主键annotation声明方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起

知识大全 spring用annotation-autowire配置

  <?xmlversion=encoding=UTF?>  <beansxmlns=  xmlns:xsi=instance  xmlns:p=  xsi:schemaLocati

知识大全 学习JPA——Hibernate Annotation使用实例

学习JPA——HibernateAnnotation使用实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看

知识大全 通过Spring2.5对单元测试的Annotation支持进行TDD开发

通过Spring2.5对单元测试的Annotation支持进行TDD开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们

知识大全 Hibernate Annotation中BLOB、CLOB注解写法

HibernateAnnotation中BLOB、CLOB注解写法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一

知识大全 Java中的注解以及应用

Java中的注解以及应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Annotation注解

“古之天下,亦今之天下,今之天下,亦古之天下”这是

“古之天下,亦今之天下,今之天下,亦古之天下”这是_____。A、形而上学的观点B、唯物主义观点C、辩证法观点D、唯心主义观点答案:A解析:本命题尽管以客观事实(天下之事物)为研究对象,但是在研究的过