首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java注释ElementType常量是什么意思?

问Java注释ElementType常量是什么意思?
EN

Stack Overflow用户
提问于 2010-08-23 18:00:38
回答 3查看 50.3K关注 0票数 66

java.lang.annotation.ElementType

程序元素类型。此枚举类型的常量提供了Java程序中声明的元素的简单分类。这些常量与Target元注释类型一起使用,以指定使用注释类型的合法位置。

有以下常量:

  • ANNOTATION_TYPE -注释类型声明
  • 构造函数-构造器声明
  • 字段-字段声明(包括枚举常量)
  • LOCAL_VARIABLE -局部变量声明
  • 方法-方法声明
  • 包-包声明
  • 参数-参数声明
  • 类型-类、接口(包括注释类型)或枚举声明

有人能解释一下它们中的每一个(在实际代码中注释它们的位置)吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-23 18:15:21

本报告概述了以下主要内容:

代码语言:javascript
复制
@CustomTypeAnnotation
public class MyAnnotatedClass {
  @CustomFieldAnnotation
  private String foo;

  @CustomConstructorAnnotation
  public MyAnnotatedClass() {
  }

  @CustomMethodAnnotation
  public String bar(@CustomParameterAnnotation String str) {
    @CustomLocalVariableAnnotation String asdf = "asdf";
    return asdf + str;
  }
}

ANNOTATION_TYPE是另一个注释的注释,如下所示:

代码语言:javascript
复制
@CustomAnnotationTypeAnnotation
public @interface SomeAnnotation {
  ..
}

包在包中的package-info.java文件中定义,如下所示:

代码语言:javascript
复制
@CustomPackageLevelAnnotation
package com.some.package;

import com.some.package.annotation.PackageLevelAnnotation;

有关包注释的更多信息,请参见这里和这里。

票数 65
EN

Stack Overflow用户

发布于 2010-08-23 18:09:54

让我们假设指定ElementType的注释称为YourAnnotation

  • ANNOTATION_TYPE -注释类型声明。注释:,这是对其他注释的说明 @YourAnnotation @interface AnotherAnnotation {..}
  • 构造函数-构造器声明 公共类SomeClass { @YourAnnotation (){.}
  • 字段声明(包括枚举常量) @YourAnnotation私有字符串someField;
  • LOCAL_VARIABLE -局部变量声明。注意:不能在运行时读取--所以它只用于编译时的事情,比如@SuppressWarnings注释。 公共无效someMethod() { @YourAnnotation a= 0;}
  • 方法-方法声明 @YourAnnotation () {..}
  • 包裹-包裹声明。注意:只能在package-info.java中使用。 @YourAnnotation org.yourcompany.somepackage;
  • 参数-参数声明 公共无效someMethod(@YourAnnotation ){.}
  • 类型-类、接口(包括注释类型)或枚举声明 @YourAnnotation公共类SomeClass {.

您可以为给定的注释指定多个ElementType。例如:

代码语言:javascript
复制
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
票数 115
EN

Stack Overflow用户

发布于 2010-08-23 18:11:22

型

注释:

代码语言:javascript
复制
@Target({ElementType.TYPE})    // This annotation can only be applied to
public @interface Tweezable {  // class, interface, or enum declarations.
}

还有一个例子用法:

代码语言:javascript
复制
@Tweezable
public class Hair {
    ...
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3550292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档