java学习之注解

1.注解是什么:
(1)可以叫做注释类型,注解是一种引用数据类型,编译后也是生成class文件
(2)提供信息给编译器: 编译器可以利用注解来探测错误和警告信息
比如 @Override提示子类要复写父类中被 修饰的方法
(3)编译阶段时的处理: 软件工具可以用来利用注解信息来生成代码、Html文档或者做其它相应处理。
(4)运行时的处理: 某些注解可以在程序运行的时候接受代码的提取

1.自定义一个注解: @interface MyAnnotation在inteface前面加一个@。
2.使用范围:类,属性,方法,构造方法,接口上,注解也可以出现在注解上面.所有位置都可以出现;(注解的注解叫做元注解)

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 {
}

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(){

    }
}

(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();
       }
   }
}

(1)如果需要获得方法上的注解就得获得方法
(2)跟前篇文章引用Method数组去获取getDeclareMethod获取所有方法

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

总体来说注解这一块的内容不是很多,归纳下来:1.注解的定义。2.注解的保存性策略(@Retention)和java内置注解3.注解的反射主要是跟前面的反射机制相结合,反射章节听完基本都是相同的方法从类-方法–属性来获取。
4.注解的作用还是存在在java的反序列化漏洞,当然在java开发中也会有很大的作用

其实看到这里,javase基本上就完结了,接下来就是javaee的部分了javaee的部分的大部分是框架只是,框架知识呢就可以和java代码审计一起做了,我看的是b站上面的动力节点的java课,对比起了动力节点讲的真很全面了,
javase历经一个月多吧,发现了java和python的相似也不同确实写python感觉要简洁好多。接下来呢不慌进入javaee先去吧java的 爬虫和socket对比着我以前学习的python的这两个模块一起学习一下再进入javaee的阶段。

Original: https://www.cnblogs.com/0x3e-time/p/16166248.html
Author: 不成大哥不改名
Title: java学习之注解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/608004/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java中的装箱和拆箱

    一.什么是装箱?什么是拆箱? 在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i = new Integer(10); 在从J…

    Java 2023年5月29日
    073
  • 用Java中的File类模拟实现对系统文件的增删改查效果

    码字不易,三连支持一波吧 😃 IO操作向来是各大语言的热区,而对文件的操作也是重中之重。那么在Java中也给我们提供了很多关于文件操作的类。今天我就用一个比较基本的 File类来模…

    Java 2023年6月7日
    079
  • java根据模板生成word文档

    首先引入pom.xml <dependency> <groupid>org.apache.poi</groupid> <artifacti…

    Java 2023年6月13日
    096
  • Vulnhub-DC-4靶机实战

    前言 靶机下载地址:https://www.vulnhub.com/entry/dc-4,313/ KALI地址:192.168.75.108靶机地址:192.168.75.207…

    Java 2023年6月13日
    088
  • 面向对象-基础篇

    前言: 引出类与对象(oop) — 为什么需要类与对象(oop) *例:我有两只小狗,有姓名,年龄,性别,怎么完成该操作? //用变量 String DogName =…

    Java 2023年6月16日
    0101
  • mybatis oracle批量插入保存

    1:XML脚本 <insert id="importExcel"> insert all <foreach collection="…

    Java 2023年5月30日
    079
  • 看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!

    摘要:找到系统性能瓶颈所在,找出在逻辑上不相干,并且没有先后顺序的业务逻辑,将其放到不同的线程中执行,能够大大提供系统的性能。 最近不少运营同事找到我说:咱们的数据校对系统越来越慢…

    Java 2023年5月30日
    094
  • [游戏引擎中文版]Hot Soup Processor最新中文支持版

    最近有的论坛希望能自己开发GAL 而不是一味 汉化GAL 就想找程序猿帮忙。 借此机会 我推出游戏引擎中文支持版,希望大家能开发属于自己的GALGAME! 上次就为大家介绍一个引擎…

    Java 2023年5月29日
    091
  • Redis详解

    1.Redis 是一个基于内存的高性能 key-value 数据库。是完全开源免费的,用C语言编写的,遵守BSD协议 2.Redis 特点: 1)Redis 是基于内存操作的,吞吐…

    Java 2023年6月16日
    076
  • SpringMVC请求流程源码分析

    一、SpringMVC使用 1.工程创建 创建maven工程。 添加java、resources目录。 引入Spring-webmvc 依赖。 org.springframewor…

    Java 2023年6月13日
    091
  • java集合框架

    转载:https://www.cnblogs.com/yangliguo/p/7476788.html 部分修改自其它博主,地址找不到了,望见谅! 集合 集合与数组 数组(可以存储…

    Java 2023年6月9日
    091
  • 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v5.8.0版)

    TableGo v5.8.0版更新震撼发布,功能更加强大,速度过来围观,此次版本更新如下:1、新增自定义文件功能,可以自己编写模板生成任意代码的文件。2、新增数据源配置自动生成功能…

    Java 2023年6月9日
    0101
  • 根据ip查询 地址信息

    这次调用了jsoup.jar包,使用它获取网上的资源获取网址https://ip138.com/的数据进行返回数据 import org.jsoup.Jsoup; import j…

    Java 2023年6月7日
    099
  • 如何使Session永不过期

    先说明情况:公司做监控系统,B/S结构,主要用在局域网内部!监控系统开机可能要开好长时间,管理员的ID 和权限等是写在Session里的——我想不用Cookies的原因可能是Coo…

    Java 2023年5月30日
    082
  • linux中如何查找一个文件夹的大小呢?

    1、(方法一)ls -lht会列出当前目录下每个文件的大小,同时也会给出当前目录下所有文件大小总和 2、(方法二)du -sh *也会列出当前文件夹下所有文件对应的大小 【把*替换…

    Java 2023年6月15日
    074
  • Spring Security自定义登录认证与数据持久化(5)

    1.用户定义 在前面的案例中,我们的登录用户是基于配置文件来配置的(本质是基于内存),但是在实际开发中,这种方式肯定是不可取的,在实际项目中,用户信息肯定要存入数据库之中。 Spr…

    Java 2023年6月13日
    073
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球