java学习笔记(一):注解(annotation)

本文出自我的个人博客,欢迎到我的博客进行观看 ——> 原文链接

注:该文章是本人通过在BiliBili学习网站的Up主 @遇见狂神说 的教学视频(Bv1p4411P7V3)下学习之后所写的学习总结。在此衷心感谢狂神免费的教学视频!

一、什么是注解?

1、定义

注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK5.0版本开始引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

2、作用

(1)不是程序本身,可以对程序作出解释

(2)可以被其他程序(如编译器)读取

3、注解与注释的区别

注解与注释不同,简单来说,注释是写给人看的,而注解不仅可以写给人看,还可以被程序所读取、识别。

4、我们常见的注解

一般我们经常能看到的注解有@Override(重写的注解),它是一个内置注解,作用是说明所注解的方法必定会重写它继承的父类中的方法。

二、内置注解

上面我们提到了其中之一,也就是@Override,除此之外,内置注解最常见的还有@Deprecated和@SuppressWarnings,@Override的作用以及解释了,下面简单解释一下另外两个注解的作用。

  • @Deprecated的作用是用于修辞方法、属性、类,表示不鼓励程序员使用这样的元素(表示该元素可能已经过时了),但是可以使用,或者存在更好的方式。(有时候在使用某些类的方法时,会发现该方法被划了一条删除线,这就是因为该方法上添加了@Deprecated注解)。

  • @SuppressWarnings简单来说就是用于镇压警告,与前面两个注解不同,它需要添加一个参数才能正确使用(有兴趣的可以百度,在此不做详细说明),添加此注解可以让指定的代码警告消失。(强迫症福利,但是不推荐)

三、元注解

元注解的作用是负责注解其他注解,Java中定义了4个标准的meta-annotaion(元注解)类型,分别是@Target,@Retention,@Documented,@Inherited。他们被用来对其他annotation(注解)类型作说明,这些元注解和它们所支持的类位于java.lang.annotation包中。

1、@Target

用于描述注解的使用范围,即被描述的注解可用于什么地方

@Target(Value=ElementType.METHOD):可注释在方法上

@Target(Value=ElementType.TYPE):可注释在类上

@Target(Value=ElementType.FIELD):可注释在字段上

当然,Value也可以传递一个数组,也就是说可以传递多个值,使其既可以注释在方法上,也可以注释在类上。

2、@retention

表示需要在什么级别保存该注释信息,用于描述注解的生命周期

@Retention(RetentionPolicy.SOURCE):在代码上有效

@Retention(RetentionPolicy.CLASS):直到编译时仍有效

@Retention(RetentionPolicy.RUNTIME):直到运行时仍有效

(SOURCE<CLASS<RUNTIME)

3、@Document

说明该注解将被包含在javadoc中,添加该注释就会使我们定义的注解生成在JAVAdoc中。

4、@Inherited

说明子类可以继承父类中的该注解

注:这四个注解是专门用来注解其他注解,也就是说,我们在定义注解的时候就需要在定义上注解这些注解,那么接下来让我们学习如何定义一个注解吧。

四、定义注解

定义一个注解:

@interface 注解名{定义内容}

如果注解需要参数,则可以这样定义:

@interface 注解名{
	参数类型 参数名( )  default 默认值;//default表示为该参数设置一个默认值,可以不写
}

下面附上一个自定义注解的例子:

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

/*在这里使用我们自定义的注解*/
public class MyTest {
    @MyAnnotation(age = 22,name = "游城十代") //这里age参数必须写,那么参数由于有默认值可以写也可以不写
    public void test(){}
}

/**
 * 定义一个注解
 * by:沐可
 * 2020/7/7
 */
@Target(value={ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
//另外两个元注解可以不添加
@interface MyAnnotation{
    //定义注解的参数: 参数类型 参数名();
    String name() default "沐可"; //默认值是沐可
    int age();
}

五、如何使用注解

通过上面几点,我们基本已经基本了解了注解的作用以及如何自定义一个注解。那么,有些人可能会问,注解有什么用呢?在哪里可以使用呢?这时就需要提到另外一个知识点——反射。我们可以把注解附加在包、类、方法、字段上,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。反射将在下一篇文章提到。

附、Springboot中常用到的注解

1、Controller层
 @ResponseBody 注解
 @RequestBody注解
 @RequestMapping注解
 @RequestParam注解
 @Controller注解
2、Service层
 @Service注解
 @Resource注解
 @Autowired注解
 @Resource注解
 @Value注解
3、Dao层
 @Repository注解
 @Query注解
4、表的映射类的相关注解(po)
 @Entity注解
 @Table注解
 @GeneratedValue
 @Transient
 @Id
 @Temporal
5、其他
 @JsonProperty注解
 @Component注解
 @PostConstruct注解
 @Bean注解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值