java 注解学习_JAVA注解学习

什么是注解 ?

【这个解释起来比较。。。。不知道怎么解释,还是直接百度吧,不会咱就抄一抄嘛~~~】

定义一:用一个词就可以描述注解,那就是元数据,即一种描述数据的数据。所以,可以说注解就是源代码的元数据。

定义二:Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。

定义三:【我还在想一种形象的解释。。。。至今还没想出来,等我想出来了,就过来写上。。。。】*

那个最常见的@Override,重写方法,这个符号就是注解。。。。。

注解的好处 ?

【我抄的,希望作者不会,来打我,这个问题是在是难以启齿,就好像再问我,class的作用是啥,intetface的作用是啥一样,我也不知道怎么回家。。。[委屈]】

1、能够读懂别人写的代码,特别是框架相关的代码。

2、本来可能需要很多配置文件,需要很多逻辑才能实现的内容,就可以使用一个或者多个注解来替代,这样就使得编程更加简洁,代码更加清晰。

3、(重点)刮目相看

(但是怎么样才能让别人刮目相看呢?会用注解不是目的,最重要的是要使用自定义注解来解决问题。)

举个栗子:

如果面试的时候,你跟老板说你会使用注解,老板觉得你这个人还行;但是如果老板发现你会自定义注解解决问题,老板肯定就会眼前一亮。

怎么使用注解 ?

不多说了,,,上代码。先看代码再解释那个@XXX的意思~~~

我定义了,注解的方法的注解~~~

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

public @interface Test {

String id();

String description() default "This id default description!";

}

@interface 用来声明一个注解,同Class,Interface一样~~~~

@Target : 注解的作用目标。

类型

作用域

ElementType.ANNOTATION_TYPE

可以应用于注释类型

ElementType.CONSTRUCTOR

可以应用于构造函数

ElementType.FIELD

可以应用于字段或属性

ElementType.LOCAL_VARIABLE

可以应用于局部变量

ElementType.METHOD

可以应用于方法级注释

ElementType.PACKAGE

可以应用于包声明

ElementType.PARAMETER

可以应用于方法的参数

ElementType.TYPE

可以应用于类的任何元素

@Retention : 注解的保留策略

类型

作用域

RetentionPolicy.SOURCE

注解仅存在于源码中,在class字节码文件中不包含

RetentionPolicy.CLASS

默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得

RetentionPolicy.RUNTIME

注解会在class字节码文件中存在,在运行时可以通过反射获取到

@Documented :注解包含在javadoc中,它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。相当与@see,@param 等。 【我没用过】

@Inherited :注解可以被继承   【我没用过】

好了,解释完毕,下一步~~~~go on

getDescription()在这个方法上使用了注解~~~

public class McyTest {

private String name;

private String sex;

private int age;

private int phoneNum;

public McyTest(String name, String sex, int age, int phoneNum) {

this.name = name;

this.sex = sex;

this.age = age;

this.phoneNum = phoneNum;

}

@Test(id = "_01", description = "好好好")

public String getDescription() {

return "马春燕";

}

@Override

public String toString() {

return "McyTest{" +

"name='" + name + '\'' +

", sex='" + sex + '\'' +

", age=" + age +

", phoneNum=" + phoneNum +

'}';

}

}

下一步,我们测试一下注解咯~~~

通过反射获取注解~~~

ps:(反射是必须会的,二者相互结合,才能使用下一章写咯...)

public static void main(String[] args) {

McyTest mcyTest = new McyTest("马春燕", "女", 20, 123456);

Method[] methods = mcyTest.getClass().getDeclaredMethods();//过去声明的方法

for (Method method : methods) {

Test annotation = method.getAnnotation(Test.class);//获取注解

if (annotation != null) {

System.out.println(annotation.description());

}

}

}

来,看看打印台~~~

1c1d5cff2012?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

看打印台

把注解的值获取出来了~~~~

完毕

你想问我,这个在程序里能干什么???是不是还没看懂???别着急,我写个反射,一起举个栗子,就一目了然了,先学习下基础~~~~

~~~如有侵权,给我留言 ,看到like删~~~

ps:我比较懒,抄了好多~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值