范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

花个几分钟,带你再了解一下Java注解

  注解(Annotation)是在java 1.5开始引入的,它是java中很重要的一个知识点。现在使用的很多框架,例如:SpringBoot、Hibernate等都大量的使用了注解。  注解是什么
  注释是元数据的一种形式,提供有关程序的数据,而不是程序本身的一部分。注解对它们所注解的代码的操作没有直接影响。 它是Java中的一种特殊标记。  注解的用途
  我们说注解的用途的前提是默认它是跟反射一起使用的,不然的话注解也就失去了它本来的作用了。注解有很多用途,比如:日志、权限、Spring中IOC等等都可以用注解来完成的。但是,总的来说有以下用途:  编译器信息:可用于编译器检测错误或抑制警告。  编译时和部署时处理: 软件工具可以处理注释信息以生成代码、XML文件等。  运行时处理: 可以在运行时检查一些注解。  生成文档:可以通过使用@Documented元注解,在需要的时候生成文档  标准注解
  标准注解有10个,其中java.lang包下有5个分别是以下五个:  「@Override」 : 检查该方法是否是重写了父类或者接口的方法,如果父类或者接口的方法删除或者被更改,编译器将提示报错。 「@Deprecated」 :标记某个类、方法、属性等是否被弃用,在不推荐使用某个方法、类、属性等时,可以使用。 「@SuppressWarnings」 :告诉编译器还可以忽略这个警告。 「@SafeVarargs」 : Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。 「@FunctionalInterface」 :Java 8 开始支持,表明该接口是一个匿名函数或函数式接口。 元注解
  元注解也是java标准注解,只不过它们比较特殊,是作用在注解上的注解。元注解都在java.lang.annotation包下。  「@Documented」 :标记这些注解是否包含在用户文档中。 「@Target」 :标记注解类型适用的java元素的种类。一些可能的值是 TYPE、METHOD、CONSTRUCTOR、FIELD 等。如果不存在目标元注释,则可以在任何程序元素上使用注释。 「@Inherited」  :表示允许子类继承父类中的注解。如果父类中使用了@Inherited注解,子类也就拥有了这个注解,子类通过Class对象的getAnnotation() 方法就能获取到父类中的注解。 「@Retention」  :标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。它采用 RetentionPolicy 参数,其可能值为 SOURCE、CLASS 和 RUNTIME 「@Repeatable」 :Java 8 开始支持,标识某注解可以在同一个声明上使用多次。 注解的分类
  注解有5类,分别是:  标记注解:唯一的目的是标记一个声明。这些注释不包含任何成员,也不包含任何数据。@Override是标记注解的一个示例。  单值注解:顾名思义就是只有一个成员的注解,并且允许以简写形式指定成员的值。我们只需要在应用注解时指定该成员的值,不需要指定成员的名称。例如: @TestAnnotation("测试")  完整注解:由多个数据成员、名称、值、对组成的注解。例如: @TestAnnotation(owner="公众号:索玛理", value="suncodernote")  类型注解:可以应用于任何使用类型的地方的注解。例如,可以作为方法的返回类型。  @Target(value = ElementType.TYPE_USE) public @interface TypeAnnoDemo { }  public class AnnotationTest {   public static void main(String[] args) {       @TypeAnnoDemo String string = "局部变量被类型注解注解";       type();   }   static @TypeAnnoDemo Integer type(){       System.out.println("返回值被类型注解注解");       return 0;   } }重复注解:重复注解指的就是被  @Repeatable 注解进行修饰的注解。 注解的定义
  注解和接口的定义差不多,只不过注解多了个  「@」  符号。定义一个注解时有以下4点比较重要: 注解中的方法不能有参数。  注解中方法的返回值必须是基本数据类型、String、枚举、注解或者数组。  注解中的方法可以有默认值  注解上可以使用元注解  自定义注解
  要自定义一个注解,有两个关键参数ElementType和RetentionPolicy必须要了解一下:  ElementType
  ElementType是一个枚举类型,它做为数组在@Target注解中出现。作用是对Java程序中注解可能出现的语法位置进行简单分类。  public enum ElementType {     TYPE,     FIELD,     METHOD,     PARAMETER,     CONSTRUCTOR,     LOCAL_VARIABLE,     ANNOTATION_TYPE,     PACKAGE,     TYPE_PARAMETER,     TYPE_USE }
  类型   可以应用的地方
  TYPE  作用于类、接口(包括注解类型)或者枚举类
  FIELD    作用于属性
  METHOD  作用于声明的方法
  PARAMETER    作用于方法参数
  CONSTRUCTOR  作用于构造方法
  LOCAL_VARIABLE    作用于局部变量
  ANNOTATION_TYPE  作用于其他注解
  PACKAGE    作用于包
  TYPE_PARAMETER  java 1.8引入的,作用于泛型参数
  TYPE_USE    java 1.8引入的,作用于任何使用类型的地方
  ElementType 中有些作用范围广的常量是可以替代其他常量的,就比如TYPE_USE可以可以替代PARAMETER 、LOCAL_VARIABLE 、FIELD等。  RetentionPolicy
  注解的保留策略,在注解 @Retention 中声明,它表示要保留注解到哪种地步。 public enum RetentionPolicy {     SOURCE,     CLASS,     RUNTIME }SOURCE:源码级别,编译期就会被抛弃用不到  CLASS:默认级别,编译期会被编译到类文件中,但在运行时获取不到。  RUNTIME:编译期会被编译到类文件中,运行时可以获取到,可以通过反射获取到。  小试牛刀自定义一个注解CustomAnnotation
  ElementType枚举一共有10常量,这里就不一一测试了,感兴趣的自己可以来回测测。 自定义的注解想要在运行时获取到RetentionPolicy一定要设置成RUNTIME,否则找不到会报错。  @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE , ElementType.METHOD , ElementType.FIELD , ElementType.TYPE_PARAMETER, ElementType.LOCAL_VARIABLE , ElementType.PARAMETER , ElementType.TYPE_USE}) public @interface CustomAnnotation {     String name() default "";      /**      * 在某个地方只有某个ElementType能起作用      * @return      */     ElementType type() default ElementType.TYPE;      /**      * 能多个ElementType在同一个地方起作用的数组      * @return      */     ElementType[] types() default {}; }测试使用
  下面是对上面自定义注解@CustomAnnotation的使用,可以看到有的地方使用了types方法,有的使用了type方法。可以发现使用types 的地方都有ElementType.TYPE_USE的身影,java 8加的这个常量使用范围是真的广,能代替其他大部分常量了已经。  @CustomAnnotation(types ={ElementType.TYPE_USE , ElementType.TYPE} ) public class AnnotationTest<@CustomAnnotation(name = "泛型参数" , types ={ElementType.TYPE_USE , ElementType.TYPE_PARAMETER} ) T> {      @CustomAnnotation(types ={ElementType.TYPE_USE , ElementType.FIELD})     private String field;      public static void main(String[] args) {         @CustomAnnotation(types ={ElementType.TYPE_USE , ElementType.PARAMETER}) String string = "局部变量被类型注解注解";              }      static @CustomAnnotation(types ={ElementType.TYPE_USE , ElementType.METHOD} ) Integer type(){         System.out.println("返回值被类型注解注解");         return 0;     }      @CustomAnnotation(type = ElementType.METHOD)     static void method(){         System.out.println("作用在方法");     }      static void param(@CustomAnnotation(types ={ElementType.TYPE_USE , ElementType.PARAMETER}) Integer p){} }
  在自定义注解 @CustomAnnotation 中,将@Targe t元注解中的ElementType.TYPE_PARAMETER 删除,测试类AnnotationTest 不会报错,但是如果把ElementType.TYPE_USE , ElementType.TYPE_PARAMETER 两个都删除的话,就会看到报错,这是因为 ElementType.TYPE_USE 能代替ElementType.TYPE_PARAMETER 。具体ElementType.TYPE_USE能代替几个ElementType枚举中的常量,感兴趣的话,自己可以动手测试一下。
  获取注解
  前面说过注解要搭配着反射使用才有用,没有要注解也没啥大的用处。  static void getCustomAnnotation() throws NoSuchMethodException {        AnnotationTest annotationTest = new AnnotationTest<>();       final Class<? extends AnnotationTest> annotationTestClass = annotationTest.getClass();       //获取类上的注解       final CustomAnnotation classAnnotation = annotationTestClass.getAnnotation(CustomAnnotation.class);       System.out.println("类上的注解"+Arrays.toString(classAnnotation.types()));        //获取泛型上的注解       final TypeVariable<? extends Class<? extends AnnotationTest>>[] typeParameters = annotationTestClass.getTypeParameters();        for (TypeVariable<? extends Class<? extends AnnotationTest>> typeParameter : typeParameters) {           final CustomAnnotation annotation = typeParameter.getAnnotation(CustomAnnotation.class);           System.out.println("泛型上的注解:"+annotation);       }        //获取方法上的注解       final Method[] declaredMethods = annotationTestClass.getDeclaredMethods();       for (Method declaredMethod : declaredMethods) {           final Annotation[] declaredAnnotations = declaredMethod.getDeclaredAnnotations();           for (Annotation declaredAnnotation : declaredAnnotations) {               System.out.println("方法名="+declaredMethod+",注解="+declaredAnnotation);           }       }   }
  结果:
  总结
  注解是Java中很重要的一个知识点,用起来也简单。它是类、方法、属性等的一个标记,搭配反射使用能够出奇效。
  参考资料:
  https://www.geeksforgeeks.org/annotations-in-java/

2021年美国电费均价0。87元,中国是多少?用真实数据来对比电力使用情况最能反映一个国家和地区的经济发展水平,我国是世界第二大经济体,美国仍是世界第一大经济体,在电力使用上中国和美国的差别有多大?电价分别是多少?美国电力使用情况美国去年GD中国山水散文节丨戴志刚脚行永州万古山水,心悟柳子千年文章戴志刚,常德临澧人,中国作家协会会员,毛泽东文学院第十八期中青作家班学员,临澧作协副主席,供职于临澧县太浮山风景名胜区管理处。创作方向以散文和报告文学为主,出版散文集风雨起心澜踏歌领航中国丨山东向海图强铺展新时代海洋强省恢弘画卷视频加载中习近平总书记对山东海洋发展寄予厚望。党的十八大以来,山东将海洋强省建设列入全省八大发展战略九个强省突破十二个着力重点任务,探索走出了一条科技引领陆海统筹改革推动合作共赢人流量卡套路多,小白千万别被割韭菜了哈喽大家好,我是小柒!今天给大家分享科普流量卡的知识!要想买到真正靠谱的流量卡,请记住以下五点1买卡一定要问能不能登官方营业厅,这类卡安全性可信度比较高,其次资费可查,维权有路,二2022年城乡居民养老保险待遇一览表,8个城市养老保险排名城乡居民养老保险,是社保养老的重要组成部分,在全国10。3亿参保人员中,既有居民养老,也有职工养老。居民养老保险因为缴费金额固定,缴费压力小,可以一次性补缴,男女统一60岁退休,为看看七十年代的国宴总理欢迎尼克松访华,总理大气,郭老谦逊看看七十年代的国宴总理欢迎尼克松访华,总理大气,郭老谦逊!一般人很难见到国宴是什么样子,一张七十年代的图片揭示了这一切。这是一张非常罕见的照片,是周恩来总理为欢迎来访的美国总统尼克林豆豆总结父亲林彪的文章写作经验,深入浅出,要三过硬作为林彪的女儿,林豆豆在晚年出席了很多与共和国有关的纪念活动,也可以说,她的一生受到了父亲极大的影响。后半生时间里,她很多工作都需要和文字打交道,不少工作经验,都是她的父亲所传授的毛泽东点评十大元帅刘伯承一条龙下凡,聂荣臻是厚道人毛泽东同他的战友们领导中国共产党和中国人民,经过长期的浴血奋战和艰苦斗争取得了中国革命的最终胜利,创建了新中国。作为一位伟大的领导者,毛泽东身边人才辈出群星灿烂,十大元帅就是其中的女会计汤英兰70年代贪污4万包养7个情夫,最终栽在情人手里阅读此文前,请动动手指点点右上方的关注,我们会为您带来更多优质内容,方便您及时阅读,感谢您的支持。1977年7月15日,晴空万里,天气有些炎热,但阻挡不了江苏省南通市如东县老百姓的唐朝权贵的三大享受昆仑奴新罗婢菩萨蛮,有钱都不一定能玩现代人有钱了,动不动抽巴西雪茄,雇菲律宾佣人,用日本马桶,喝法国红酒,请美国健身教练,开意大利超级跑车。把浑身珠光宝气的庸俗当作高雅享受,虽然我们表面上都很鄙视这种纸醉金迷的生活,烽火戏诸侯,褒姒灭周真实存在吗?探究西周灭亡与褒姒的关系如果您喜欢这篇作品,欢迎点击右上方关注。感谢您的鼓励与支持,希望能给您带来舒适的阅读体验。家国自有兴亡时,吴人何苦怨西施。西施若解倾吴国,越国亡来又是谁?唐罗隐古语有言红颜祸水,尤
龙岩市博物馆主打客家闽地记游之三龙岩市,是闽西的地级市。坐落于龙岩市中心广场东侧的市博物馆,是1999年建成的新馆。无论从展览的内容来说,还是从博物馆建筑造型来看,这座国家二级博物馆,呈现出明显的客家国庆假期去哪里玩?增城这些地方等你来打卡十一黄金周还剩6天!小伙伴都到哪玩了呢?小长假,不远游民族服饰联欢快闪特色旅游项目体验星空光影灯光秀游山玩水品美食家门口的诗与远方同样惊艳你的假期!增城区节庆活动丰富多彩十一假期,三亚蜈支洲岛景区游客有序离岛蜈支洲岛景区基地码头,下岛游客排队核酸。景区供图中新网三亚10月3日电(记者王晓斌)3日14时起,三亚海棠区对后海村所在的藤海社区蜈支洲岛景区等区域实施临时性管控措施。蜈支洲岛景区欢天喜地庆国庆今年的国庆将迎来党的二十大胜利召开!处处异彩纷呈。现在,国庆刚过,但是,许多景点景物,依然留在记忆之中。首都盛装庆国庆,迎接二十大。祝福祖国繁荣昌盛!祖国万岁!腾飞!向上!向前!一国庆男子开特斯拉回家,究竟什么原因让车主花费2000元雇拖车回家特斯拉被称为电动车中的战斗机,尤其起步时的速度秒杀了许多传统燃油车,相当的拉风,可谓是一时风光无限。就好比曾经一个经典段子里面的一句话我的一脚油门下去,你能看见我的尾灯就算我输,虽慈利县召开2022年全县国庆假日旅游接待工作会议红网时刻张家界9月29日讯(通讯员王翔吴灏)9月29日,慈利县召开2022年全县国庆假日旅游接待工作会议。副县长谷海洪出席会议,县相关涉旅企业职能部门乡镇街道等负责人参加会议。会上国庆假期消费减免购置税政策利好车市升温央视网消息今年,我国延长了免征新能源汽车购置税政策,并明确了减征车购税政策,激发了汽车消费的潜力。国庆期间,不少地区车市升温,销售看好。国庆期间,记者在广东福建等多地发现,不少市民国庆特惠!飞利浦1TB固态仅需399元现在想买固态硬盘的可以国庆期间关注一下,现在很多品牌都在做活动,活动期间飞利浦1TB固态仅需399元,比平常便宜了70元。采用M。2接口,读速2500MBs,写入2000MBs,具余姚市5个热门景区,9个小众景点,你来过几个呢?浙江余姚是宁波代管的县级市,位于宁绍平原上,区域南北狭长,北邻杭州湾,南枕四明山。交通发达,萧甬铁路横贯中部,杭甬公路穿越境北。余姚市历史悠久,史载有舜耕历山禹藏秘图之说,1973国庆去哪玩密云云蒙山白河峡谷赏秋之旅头条创作挑战赛线路四云蒙山白河峡谷赏秋之旅行程路线云蒙山黑龙潭白乙化纪念馆邓玉芬广场天门山捧河沿清凉谷白河大峡谷推荐理由沿着水库西岸及白河而上,感受日渐多彩的山色,穿林海溯溪漂流打太湖中的最大岛屿苏州西山岛在苏州古城40公里处,有一个西山岛,是太湖中的最大岛屿。苏州西山大桥建成后,衔接长沙岛和叶山岛,把苏州城和西山岛连接起来。当汽车行驶在西山大桥的时候,我们遥看不远处的座座岛屿,犹如