前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中注解学习系列教程-3

Java中注解学习系列教程-3

作者头像
凯哥Java
发布2019-06-28 14:47:23
3130
发布2019-06-28 14:47:23
举报
文章被收录于专栏:凯哥Java凯哥Java

本文是《Java中注解学习系列教程》第三篇文章

在前两篇中我们学习了注解的定义、JDK内置注解、注解分类及自定义注解的写法。

本文咱们将学习:

8b267cd63eba4146c8eb75bbc2911f9d.png
8b267cd63eba4146c8eb75bbc2911f9d.png

1:自定义注解一些说明

2:自定义注解怎么使用

3:怎么解析自定义注解

一:自定义注解一些说明:

自定义注解的时候,内部成员可被允许的类型又有哪些呢?

1:基本类型(Java中8中基本类型)

2:stirng类型

3:class

4:其他注解

5:枚举类

6:以上五类的数组

如下图:

3814efdbe01e53ea45643582a7ae8219.png
3814efdbe01e53ea45643582a7ae8219.png

Java官方文档(https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.6.1)原文如下:

c66178d2b55953ace07354d11b62f610.png
c66178d2b55953ace07354d11b62f610.png

类型举例:

b7fde3dfe7318b219471f87ed66cefee.png
b7fde3dfe7318b219471f87ed66cefee.png

需要说明的:

1:如果注解只有一个成员时候,成员名称必须为value

2:注解类可以没有成员,没有成员的注解为:标识注解

二:自定义注解的使用

说明:自定义注解根据其使用范围使用。

如MyAnnotation1这个自定义注解

0ce7b29b98bc717f05c38ab998ef300b.png
0ce7b29b98bc717f05c38ab998ef300b.png

使用范围是是method和field上。

我们就在method的使用该注解:

语法是:

注解名称(成员名称 = 成员值,成员名称2 = 成员值2)

如下图:

6468a3563f4e18b8e70ee3447f16043e.png
6468a3563f4e18b8e70ee3447f16043e.png

三:注解解析

在使用注解的时候,使用的反射处理的。

代码语言:javascript
复制
public class MyAnnotation1Test {

    public static void main(String[] args) {
        try {
          //1:使用类加载器加载类
            Class clazz = Class.forName("MyAnnotation1PoJo");
            //2:在对于的类上是否存在对于注解
            //获取方法上是否有注解
            for(Method method : clazz.getMethods()){
                boolean isMothExistMyAnnotation1 = method.isAnnotationPresent(MyAnnotation1.class);
                if(isMothExistMyAnnotation1){
                    //3:如果存在。就获取
                    MyAnnotation1 myAnnotation1 = (MyAnnotation1)method.getDeclaredAnnotation(MyAnnotation1.class);
                    System.out.println("==>:方法"+method.getName()+"有注解。值为:"+myAnnotation1.value());

                }else{
                    System.out.println("==>:方法"+method.getName()+"无注解");
                }
            }

        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
c01ee078b2ec31a2adbfa4656b1af461.png
c01ee078b2ec31a2adbfa4656b1af461.png

注:关于反射方面的学习。在后期,凯哥也会出相应的学习教程。

我们查看运行后的结果:

06fe42ee534a19e985ef13f70feac73a.png
06fe42ee534a19e985ef13f70feac73a.png

可以正常解析出自定义注解的值。

下节预告:在下一节中,凯哥将通过自定义注解实现excel的导出功能

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档