【Java 注解】

78 篇文章 0 订阅

Junit单元测试

package com.yuzhenc.note;

import org.junit.Assert;
import org.junit.Test;

/**
 * @author: yuzhenc
 * @date: 2022-04-10 20:13:23
 * @desc: com.yuzhenc.note
 * @version: 1.0
 */
public class Test01 {
    //测试add方法
    @Test
    public void testAdd(){
        System.out.println("测试add方法");
        int result = add(10,20);
        System.out.println(result);
        //System.out.println(result);--》程序的运行结果可以不关注
        //加入断言:预测一下结果,判断一下我预测的结果和 实际的结果是否一致:
        //第一个参数:预测结果  第二个参数:实际结果
        Assert.assertEquals(20,result);
    }

    public static int add(int a, int b) {
        return a+b;
    }
}

在这里插入图片描述

@Before和@After

  • @Before : 在测试方法执行前先执行
  • @After : 在测试方法执行后先执行
package com.yuzhenc.note;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

/**
 * @author: yuzhenc
 * @date: 2022-04-10 20:24:44
 * @desc: com.yuzhenc.note
 * @version: 1.0
 */
public class Test02 {
    @Before
    public void init(){
        System.out.println("方法执行开始了。。。");
    }
    @After
    public void close(){
        System.out.println("方法执行结束了。。。");
    }
    //测试add方法
    @Test
    public void testAdd(){
        System.out.println("测试add方法");
        int result = add(10,20);
        System.out.println(result);
        //System.out.println(result);--》程序的运行结果可以不关注
        //加入断言:预测一下结果,判断一下我预测的结果和 实际的结果是否一致:
        //第一个参数:预测结果  第二个参数:实际结果
        Assert.assertEquals(20,result);
    }
    public static int add(int a, int b) {
        return a+b;
    }
}

在这里插入图片描述

文档相关注解

在这里插入图片描述

JDK内置的3个注解

  • @Override : 限定重写父类方法,该注解只能用于方法
  • @Deprecated : 用于表示所修饰的元素(类,方法,构造器,属性等)已过时,通常是因为所修饰的结构危险或存在更好的选择
  • @SuppressWarnings : 抑制编译器警告

自定义注解

package com.yuzhenc.note;

/**
 * @author: yuzhenc
 * @date: 2022-04-10 20:41:40
 * @desc: com.yuzhenc.note
 * @version: 1.0
 */
//使用注解的话,如果你定义了配置参数,就必须给配置参数进行赋值操作
@MyAnnotation(value = {"abc","def","ghi"})
public class Test03 {}
//如果只有一个参数,并且这个参数的名字为value的话,那么value=可以省略不写
@MyAnnotation({"abc","def","ghi"})
class Test04 {}
//如果你给配置参数设置默认的值了,那么使用的时候可以无需传值
@MyAnnotation1
class Test05 {}
@MyAnnotation2
class Test06 {}

@interface MyAnnotation {
    String[] value();
    /*
        这value是属性还是方法?
        答案:看上去是无参数方法,实际上理解为一个成员变量,一个属性
        无参数方法名字--》成员变量的名字
        无参数方法的返回值--》成员变量的类型
        这个参数叫 配置参数
        无参数方法的类型:基本数据类型(八种),String,枚举,注解类型,还可以是以上类型对应的数组
    */
}
@interface MyAnnotation1 {
    String[] value() default "abc";
}
//一个注解的内部是可以不定义配置参数的
@interface MyAnnotation2 {}

元注解

  • @Retention : 用于修饰注解,用于指定修饰的那个注解的生命周期,@Rentention包含一个RetentionPolicy枚举类型的成员变量,使用@Rentention时必须为该value成员变量指定值
    • RetentionPolicy.SOURCE : 在源文件中有效(即源文件保留),编译器直接丢弃这种策略的注释,在.class文件中不会保留注解信息
    • RetentionPolicy.CLASS : 在class文件中有效(即class保留),保留在.class文件中,但是当运行Java程序时,他就不会继续加载了,不会保留在内存中,JVM不会保留注解。如果注解没有加Retention元注解,那么相当于默认的注解就是这种状态
    • RetentionPolicy.RUNTIME : 在运行时有效(即运行时保留),当运行 Java程序时,JVM会保留注释,加载在内存中了,那么程序可以通过反射获取该注释
  • @Target : 用于修饰注解的注解,用于指定被修饰的注解能用于修饰哪些程序元素
    • 例如:@Target({TYPE,CONSTRUCTOR,METHOD})
  • @Documented : 用于指定被该元注解修饰的注解类将被javadoc工具提取成文档,默认情况下,javadoc是 不包括注解的,但是加上了这个注解生成的文档中就会带着注解了
  • @Inherited : 被它修饰的Annotation将具有继承性,如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sqlboy-yuzhenc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值