Java基础之注解

一、注解:

1.什么是注解?

注解一般用于对程序的说明,就像注释一样,但区别是注解是给人看的,注解是给程序看的,让编译器进行编译检查的作用,比如@Override修饰方法,表示重写父类方法,如果改动了方法的名称就会编译报错

2.注解的格式

注解是以@注释名 在代码当中存在的,还可以添加一些参数值,例如@SuooerssWarnings(value="unchecked")

3.注解可以在哪里使用

可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,以后可以通过反射来获取其注解信息,一般自定义注解都是用这个值

二、注解的类型

一般常用注解分为三类

1.内置注解

  • @Override修饰方法,表示重写父类方法
  • @Deprecated:修饰方法属性类 表示不鼓励程序员使用这些元素,通常是因为他很危险,或者存在更好的方法,通俗的说这个方法是遗弃的
  • @SuooerssWarnings用来抑制编译时的警告信息,其参数如下含义:

deprecation:使用了过时的类或方法的警告

unchecked:执行了未检查时的转换时的警告

path:在类路径,源文件路径等中有不存在的路径的警告

all:以上所有情况警告

@SuooerssWarnings的使用方式:

        一个参数@SuooerssWarnings(value="unchecked")

        多个参数@SuooerssWarnings(value={"unchecked",“unchexk”})

2.元注解

元注是用来给注解使用的,Java中的提供了4个元注解

1.@Target

@Target(用来描述注解的使用范围)

其参数值:TYPE(类、接口)、METHORD(方法)、PACKAGE(包)、PARAMETER(方法参数)等

2.@Retention

@Retention注解(用来描述注解什么时候有效,用来描述注解的生存周期)其参数值:

        SOURCE(源文件保留)

        CLASS(编译期间保留,默认值)

        RUNTIME(运行期保留,可以通过反射)

3.@Documented注解

        (用来标注生成javadoc的时候是否被记录,了解就好)

4.@Inherited注解

(使被它修饰的注解具有继承性)

3.自定义注解


①@interface是用来声明一个注解的,格式 public @interface注解名0
②注解其中的每一个方法实际上是声明了一个配置参数
③方法名称就是参数的名称
④返回值类型就是参数的类型
⑤可以通过default来声明参数的默认值
⑥如果只有一个方法,也就是只有一个参数时,一般参数名称建议使用value,因为value在使用注解时参数名可以省略
⑦注解参数如果没有设置默值,必须要使用该参数并且赋值
 

三、注解实现

1.自定义注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(value=ElementType.TYPE)
public @interface WebServlet {
    String url() default "";
}

2.在一个类上使用注解

@WebServlet(url="/firstServlet")
public class FirstServlet {
    
}

3.通过反射获取注解信息

public class ReflectDemo {
    public static void getMessage() throws ClassNotFoundException {
        Class clz = Class.forName("text23.FirstServlet");
        
        //获取注解信息
        WebServlet webServlet = (WebServlet) clz.getDeclaredAnnotation(WebServlet.class);
        System.out.println(webServlet.url());
    }
    public static void main(String[] args) throws ClassNotFoundException {
        getMessage();
    }
}

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值