注解机制 (Annotation)

一,定义:

        在java中前面有@符号的就是注解,如:@Override。一些特殊的有参数,如:@SuppressWarnings (value="unchecked")。注解给Class,Field,Method等地方加上辅助信息,可以在反射的时候加以利用。

二,常用的注解:

(1)内置注解

         @Override @Deprecated @SuppressWarnings()是最常见的。

@Override:进行重写的方法

@Deprecated:不建议使用或已经淘汰的方法

@SuppressWarnings():镇压编译时的警告,如:

@SuppressWarnings("all")
public class Account {
    private int bankMoney;

    public Account(int bankMoney) {
        this.bankMoney = bankMoney;
    }
}

如果没有@SuppressWarnings("all"),在IDEA中Account和bankMoney会是灰色,相当于警告,而加了之后就没有了

(2)元注解

        元注解(meta-Annotation)用来注解其他注解,java定义了四种类型。如下:

@Target描述注解的使用范围
@Retention描述该注解需要在什么级别保存(SOURCE<CLASS<RUNTIME)
@Document表示该注解生成在javadoc中
@Inherited表示子类可以继承父类的注解

Notations:Source表示源码,RUNTIME表示运行时候,CLASS表示编译生成的.class文件。比如:

@Target(value = {ElementType.METHOD,ElementType.CONSTRUCTOR})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Inherited
@interface  MyAnnotation{

        }

三,自定义注解:

        自定义注解使用@interface,自动继承java.lang.annotation.Annotation

public class Account {
    private int bankMoney;

   @MyAnnotation(3.14)
//   如果一个注解里面只有value需要赋值,那么可以省略写value
    public Account(int bankMoney) {
        this.bankMoney = bankMoney;
    }
}

@Target(value = {ElementType.METHOD,ElementType.CONSTRUCTOR})
@Retention(value = RetentionPolicy.RUNTIME)
@interface  MyAnnotation {
    String name() default "ok";

    //    定义一个参数,形式:类型+名称+()
    int i() default 1;

    //    定义一个带默认值的参数,不赋值就是默认值
    double value();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值