继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

JAVA的注解(Annotations)

慕粉2139185169
关注TA
已关注
手记 30
粉丝 27
获赞 128

一、哪里可以使用注解
可以使用在类、域变量(对象属性变量)、方法、其他程序元素的申明,按照惯例写在申明行的上面,如:
@Override
void mySuperMethod() { ... }
@Author(name = "Jane Doe")
@Author(name = "John Smith")
class MyClass { ... }
二、申明一个注解类型(可以理解为注入类体的一种元数据)
语法如下:
@interface ClassPreamble {
String author();
String date();
int currentRevision() default 1;
String lastModified() default "N/A";
String[] reviewers();
}
定义之后,可以这样使用:
@ClassPreamble (
author = "John Doe",
date = "3/17/2002",
currentRevision = 6,
lastModified = "4/12/2004",
reviewers = {"Alice", "Bob", "Cindy"}
)
public class Generation3List extends Generation2List {...}
三、预定义注解(API提供的注解)
java.lang包中(系Java编译): @Deprecated, @Override, and @SuppressWarnings;
@SafeVarargs:抑制不定长参数的安全性检测告警
@FunctionalInterface:函数式接口
java.lang.annotation包中(元注解-定义注解使用):
@Retention 将标记的注解存在哪
RetentionPolicy.SOURCE – The marked annotation is retained only in the source level and is ignored by the compiler.
RetentionPolicy.CLASS – The marked annotation is retained by the compiler at compile time, but is ignored by the Java Virtual Machine (JVM).
RetentionPolicy.RUNTIME – The marked annotation is retained by the JVM so it can be used by the runtime environment.

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP

热门评论

main方法中测试:

 Administrator adr = new Administrator();

Method mm = adr.getClass().getMethod("impelementTodo") ;

        System.out.println(mm.getAnnotation(Todo.class).author());

下面来写一个例子:

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;


@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

public @interface Todo {

public enum Priority {LOW, MEDIUM, HIGH}

public enum Status {STARTED, NOT_STARTED}

String author() default "Yash";

Priority priority() default Priority.LOW;

Status status() default Status.NOT_STARTED;

}

在类中使用 

/**

     * 自定义注解

     */

    @Todo

    public void impelementTodo( )

    {   

    }

查看全部评论