栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java注解

菜鸟教程写得更全面
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。
Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容,同时它也支持自定义 Java 标注。

内置的注解
Java 定义了一套注解,共有 7 个,3 个在 java.lang 中,剩下 4 个在 java.lang.annotation 中。从java7开始额外增加了三个注解。

元注解(作用在其他注解的注解)

@Retention - 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。
RetentionPolicy.SOURCE:表示该注解自会存在于代码阶段,编译时就会自动忽视
RetentionPolicy.CLASS:表示该注解只会存在于编译时,他不会被加载到JVM中
RetentionPolicy.RUNTIME:表示该注解可以保留到程序运行时,他会被加载到JVM中,所以在程序运行时可以获取到它们。

@documented - 标记这些注解是否包含在用户文档(javadoc)中。

@Target - 标记这个注解应该是哪种 Java 成员。(这个注解作用的对象)
ElementType.ANNOTATION_TYPE 可以给一个注解进行注解
ElementType.ConSTRUCTOR 可以给构造方法进行注解
ElementType.FIELD 可以给属性进行注解
ElementType.LOCAL_VARIABLE 可以给局部变量进行注解
ElementType.METHOD 可以给方法进行注解
ElementType.PACKAGE 可以给一个包进行注解
ElementType.PARAMETER 可以给一个方法内的参数进行注解
ElementType.TYPE 可以给一个类型进行注解,比如类、接口、枚举

@Inherited - 标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)
比如说A使用了该注解,那么继承自A的B也默认会有此注解
@Repeatable - Java 8 开始支持,标识某注解可以在同一个声明上使用多次

预置的注解(作用在代码的注解)

@Deprecated:用来标记已过时的元素
@Override:提示子类要重写父类的方法
@SuppressWarnings:可以忽略某种警告
@SafeVarargs:提醒开发者不要用参数做一些不安全的操作(不常用)
@Functionallnterface:函数时接口注解(不常用)

Annotation架构
"每 1 个 Annotation" 都与 "1 个 RetentionPolicy" 关联,并且与 "1~n 个 ElementType" 关联
                       (指定Annotation的策略--作用域)           (指定Annotation类型)

Annotation.java

package java.lang.annotation;
public interface Annotation {
    boolean equals(Object obj);
    int hashCode();
    String toString();
    Class annotationType();
    }

ElementType.java

package java.lang.annotation;
public enum ElementType {
    TYPE,               
    FIELD,                  
    METHOD,                 
    PARAMETER,              
    CONSTRUCTOR,            
    LOCAL_VARIABLE,         
    ANNOTATION_TYPE,        
    PACKAGE             
    }

RetentionPolicy.java

package java.lang.annotation;
public enum RetentionPolicy {    
SOURCE,                
CLASS,                 
RUNTIME            
}
自定义注解 @interface

类似于创建一个接口文件。

public @interface NewAnnotation {}

使用自定义的注解类型:

public class AnnotationTest {
    @NewAnnotation
    public static void main(String[] args) {  }
}

示例

public @interface NewAnnotation {
    String value();
}
public class AnnotationTest {
    @NewAnnotation("mainmethod")
    public static void main(String[] args) {  }
    @NewAnnotation(value="saymethod")
    public static void saying(){}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号