0x00前言

1.注解是什么:

(1)可以叫做注释类型,注解是一种引用数据类型,编译后也是生成class文件

(2)提供信息给编译器: 编译器可以利用注解来探测错误和警告信息

比如 @Override提示子类要复写父类中被 修饰的方法

(3)编译阶段时的处理: 软件工具可以用来利用注解信息来生成代码、Html文档或者做其它相应处理。

(4)运行时的处理: 某些注解可以在程序运行的时候接受代码的提取

0x01基础使用

0x1注解的基础属性

1.自定义一个注解:@interface MyAnnotation在inteface前面加一个@。

2.使用范围:类,属性,方法,构造方法,接口上,注解也可以出现在注解上面.所有位置都可以出现;(注解的注解叫做元注解)

0x2java自带的注解。

a.@Override这是重写父类方法的必要注解。这个注解只能注解方法

b.这个方法是给编译器看的,跟运行阶段没关系,编译器看到这个注解的方法不是重写父类的编译器就会报错。

c.元注解是@Target,@Retention

d.@Target,标注的注解只能出现在那些方法,@Retention,标注的注解最终保存在哪里

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)//只能保存在java源文件中
public @interface Override {
}

f.@Retention保持性

@Retention(RetentionPolicy.SOURCE)//表示保存在java源文件中(你在class编译获得class文件中是找不到它的)
@Retention(RetentionPolicy.CLASS)//表示保存在class文件中
@Retention(RetentionPolicy.RUNTIME)//保存在class文件中还可以被反射机制访问道

g.@Deprecated表示这个类已经过时了。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Documented {
}

0x03注解中定义属性

0x1定义和使用方法

1.可以在注解的中括号了的定义属性

2.属性可以是的类型:byte,int,lang,short,float,double,boolean,char,String,Class,枚举类型及其以上属性的数组

 @interface MyAnnotation{
// 我们可以在注解中定义属性,看着像一个方法其实它叫属性
String name();
String [] str1();
int value();
char value2();
boolean value3();

3.使用方法在你用注解修饰的方法的后面要用括号把属性值赋值。

(1)如果你的属性值只有一个并且属性名是value的话=号和=号前面的属性可以省略

(2)如果你在注解里面的属性已经进行了赋初值,就可以不用赋值。

(3)如果属性是一个数组,但是只有一个元素的时候可以省略大括号

class MyAnntation{
@MyAnnotation(name = "XIAOMING",value =1,value2 ='3',value3 = true,str1 = "daiwfwa")
public void dosome(){ }
}

0x04反射注解

0x1.获取类上的注解

(1)判断是否存在该注解isAnnotationPresent()

(2)存在注解通过getAnnotation();

  public static void main(String[] args) throws Exception{
Class class_tesr=Class.forName("zhonglin.www.MyAnntation");
//先判断是否有
if (class_tesr.isAnnotationPresent(MyAnntation.class)){
MyAnnotation myAnnotation=(MyAnnotation)class_tesr.getAnnotation(MyAnnotation.class);
String value= myAnnotation.name();
}
}
}

0x2.获取类上的注解

(1)如果需要获得方法上的注解就得获得方法

(2)跟前篇文章引用Method数组去获取getDeclareMethod获取所有方法

  Method dosomgetfelct=class_tesr.getDeclaredMethod("dosome");
if (dosomgetfelct.isAnnotationPresent(MyAnnotation.class));

0x05总结

总体来说注解这一块的内容不是很多,归纳下来:1.注解的定义。2.注解的保存性策略(@Retention)和java内置注解3.注解的反射主要是跟前面的反射机制相结合,反射章节听完基本都是相同的方法从类-方法--属性来获取。

4.注解的作用还是存在在java的反序列化漏洞,当然在java开发中也会有很大的作用

0x06后言

其实看到这里,javase基本上就完结了,接下来就是javaee的部分了javaee的部分的大部分是框架只是,框架知识呢就可以和java代码审计一起做了,我看的是b站上面的动力节点的java课,对比起了动力节点讲的真很全面了,

javase历经一个月多吧,发现了java和python的相似也不同确实写python感觉要简洁好多。接下来呢不慌进入javaee先去吧java的 爬虫和socket对比着我以前学习的python的这两个模块一起学习一下再进入javaee的阶段。

java学习之注解的更多相关文章

  1. Java学习:注解,反射,动态编译

    狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Java学习:注解,反射,动态编译 Annotation 注解  什么是注解 ? Annotat ...

  2. Java学习之注解篇

    Java学习之注解篇 0x00 前言 续上篇文章,这篇文章就来写一下注解的相关内容. 0x01 注解概述 Java注解(Annotation)又称Java标注,是JDK5.0约会的一种注释机制. 和J ...

  3. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  4. Java学习之注解Annotation实现原理

    前言: 最近学习了EventBus.BufferKinfe.GreenDao.Retrofit 等优秀开源框架,它们新版本无一另外的都使用到了注解的方式,我们使用在使用的时候也尝到不少好处,基于这种想 ...

  5. Java学习之==>注解

    一.概述 关于注解,首先引入官方文档的一句话:Java 注解用于为 Java 代码提供元数据.作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的.接下我将从注解的定义. ...

  6. Java学习:注解简介

    JAVA 注解的基本原理 以前,『XML』是各大框架的青睐者,它以松耦合的方式完成了框架中几乎所有的配置,但是随着项目越来越庞大,『XML』的内容也越来越复杂,维护成本变高. 于是就有人提出来一种标记 ...

  7. Java学习_注解

    使用注解 注解是放在Java源码的类.方法.字段.参数前的一种特殊"注释". 1 // this is a component: 2 @Resource("hello&q ...

  8. Java学习笔记--注解和反射

    注解和反射 1. 注解 注解作用: 对程序做出解释 被其他程序读取 注解格式: @注释名,还可以添加一些参数值,例如@SuppressWarnings(value="unchecked&qu ...

  9. Java学习笔记--注解

    注解的使用与实例:http://www.cnblogs.com/pepcod/archive/2013/02/16/2913474.html 注解的作用及使用方法:http://wenku.baidu ...

随机推荐

  1. qt C2144 语法错误,需要在类型前添加;(分号)

    可能原因:有部分头文件未以";"结尾.

  2. 关于DOS命令窗口的一点基本知识

    1.DOS命令窗口又可称为CMD窗口.shell.终端. 2.常用的DOS命令: -硬盘分区名+: :进入到该硬盘分区(注意是英文冒号哦) -cd+目录名:进入到指定(该)目录 -dir:列出当前目录 ...

  3. 截取url后缀扩展名方法

    原本使用 Path(_['video']['downloadUrl']).suffix 获取文件扩展名,没想到出错了,查明原因发现某视频链接是https://xx.xxx.xxx/xx/xxxx.mp ...

  4. Vmware虚拟主机启动卡死问题解决

    记录一次虚拟主机开机卡死,黑屏,无法操作的问题 一.问题现象 1.在vmware上新建数台主机后,第一次启动都正常,部分主机出现关机后再开机(或直接重启)卡死的情况: 2.在vmware上右键菜单栏均 ...

  5. ABC266.

    D 设 \(f_{t,p}\) 代表在 \(t\) 时间点时人在 \(p\) 点的最大收益,在这一步他可以 \(p\) 增加,不动,\(p\) 减少.于是得出状态转移方程:\(f_{t,p} = \m ...

  6. 《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(19)-Fiddler精选插件扩展安装,将你的Fiddler武装到牙齿

    1.简介 Fiddler本身的功能其实也已经很强大了,但是Fiddler官方还有很多其他扩展插件功能,可以更好地辅助Fiddler去帮助用户去开发.测试和管理项目上的任务.Fiddler已有的功能已经 ...

  7. 后端程序员实现一个IP归属地的小程序

    在日常开发中,后端主要提供数据以及处理业务逻辑,前端主要提供页面布局以及数据展示.后端程序员对于页面布局接触比较少,但是小程序有完善的文档说明.页面布局也相对简单,实现起来相对简单一些.而且小程序相对 ...

  8. Traefik 控制面板 SaaS 服务 Pilot

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247485572&idx=1&sn=8ffa2bc7 ...

  9. rollup汇总作业-合并索引

    文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/106194800

  10. Prometheus组件介绍

    Prometheus Server Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询. Prometheus Server可以通过静态配 ...