day_31Java注解---Annotation

Java面向对象-一文搞懂java中的注解(Annotation) 1.什么是注解 * 从jdk1.5 开始,java增加了对元数据(MetaData)的支持,即注解Annotation); * 注解Annotation)就是代码里的特殊标记,这种标记可以在 编译,类加载,运行 时被读取,并执行相应的处理; * 注解Annotation)可以像修饰符一样被使用,可用于修饰 包,类,属性,方法,构造器,参数,局部变量的声明; 2.java编译时的三个常见注解 下面先来了解一下 java中常见的三个注解,依次来加深对注解的印象: 【以下三个注解都是在编译时起作用的】 1 阅读详情


星期二, 十二月 01, 2015 18:30:08   

 

给编译器看的注释---Annotation

 

功能建立在反射机制之上,通过An可以对程序进行注释操作。

系统内建Anon、如何自定义、反射和n的关联,

以及如何通过ation生产Donted。

 

本章要点

   掌握Annotation的相关概念

   熟悉自定义Annotation的方法

   了解反射和Annotation的关联

 

一、Annotation

 

    Annotation  实际上表示的是一种注释的语法。

在java中最早的程序是提倡程序与配置代码相分离,

而最新的理论是将所有的配置直接写到程序之中,如果想完成这样的功能,就要使用Annotation。

伦理片 http://www.dotdy.com/

 

二、系统内建的Annotation

 

    在jdk1.5之后的系统中,内建了3个Annotation:

        @Override、@Deprecated、@SuppressWarinings。

 

2.1 @Override

    表示进行正确的覆写操作

 

   即使覆盖的方法名称写错了,也不会有任何的提示。

此时,为了保证程序可以正确地进行覆盖操作,在覆盖的时候可以明确地使用@Override表示方法是属于覆盖的操作。

  

 代码案例:

Overridetest代码   收藏代码
  1. package day30;  
  2.   
  3. public class OverrideTest {  
  4.     public static void main(String[] args) {  
  5.         Student s = new Student();  
  6.         System.out.print("..."+s.say());  
  7.     }  
  8. }  
  9. class Person {  
  10.     public String say() {  
  11.         return "Person_say()";  
  12.     }  
  13. }  
  14. //要求增加此类的子类,覆盖其方法  
  15. class Student extends Person {  
  16. /*为了保证程序可以正确地进行覆盖操作,  
  17. * 在覆盖的时候可以明确地使用@Override表示方法是属于覆盖的操作。*/  
  18. @Override  
  19. public String say() {  
  20.     return "Student_say()";  
  21.     }  
  22. }  
  23.    

 

运行结果:

...Student_say()

 

2.3@Deprecated

  @Deprecated注释表示不建议使用的操作。

例如之前在讲解线程的时候,曾经讲解过线程中的stop()、resume()、suspend()等方法是不建议使用的。

  

代码案例:

Deprecatedtest代码   收藏代码
  1. package day30;  
  2.    
  3. public class DeprecatedTest {  
  4.     public static void main(String[] args) {  
  5.         System.out.print((new Info()).getInfo());  
  6.     }  
  7. }  
  8.    
  9. class Info {  
  10. /*@Deprecated注释表示不建议使用的操作。*/  
  11. @Deprecated  
  12.     public String getInfo() {  
  13.         return "getInfo()....";  
  14.     }  
  15. }  

 

运行结果:

getInfo()....

 

2.4 @SuppressWarnings

 

 @SuppressWarnings表示的是压制警告。

如果有一些警告信息则可压制掉,不出现警告的提示。

 

@SuppressWarnings(“deprecation”)

 

使用SuppressWarnings操作的时候可以同时压制多个警告

通过SuppressWarnings的类,可以发现在此类中存在一个value的字符串数组。

 

 

 

Person类中既继承了Info类,又实现了序列化的接口,所有此时会出现多个警告。

或者可以明确的表示,是为SuppressWarnings中的value属性赋值。

 

代码案例:

 

Suppresswarningstest代码   收藏代码
  1. package day30;  
  2.    
  3. import java.io.Serializable;  
  4.    
  5. public class SuppressWarningsTest {  
  6.     @SuppressWarnings("deprecation")  
  7.     public static void main(String[] args) {  
  8.         System.out.print((new Infos()).getInfos());  
  9.     }  
  10. }  
  11.    
  12. class Infos {  
  13.     @Deprecated  
  14.     public String getInfos() {  
  15.         return "....getInfos";  
  16.     }  
  17. }  
  18.    
  19. @SuppressWarnings(value = {"serial","deprecation"})  
  20. class Persona extends Infos implements Serializable {  
  21. /*Person类中既继承了Info类,又实现了序列化的接口,所此时会出现多个警告。*/  
  22.    
  23. }  

 

 

运行结果:

....getInfos

 

三、自定义Annotation

影音先锋电影 http://www.iskdy.com/ 

 

    3.1定义Annotation的语法

      public @interface Annotation的名称{}

 

   案例:

    public @interface MyAnnotation{

    }

 

如果现在使用此Annotation的话,若不在同一个包中,则需要导入,导入之后使用@的形式反问,语法@MyAnnotation

    @MyAnnotation

    public class Info{

    }

      

在一个Annotation中实际上也可以定义若干个属性。

       public @interface MyAnnotation{

                 public String key();

                 public String value();

       }

 

   在此时Annotation中定义了key和value两个变量,若此时要使用Annotation的话,则必须明确地给出具体的内容。

 

    @MyAnnotation(key="MLDN",value="www.baidu.com")

 

 

 

如果现在希望为一个Annotation设置默认内容的话,可以通过default完成。

       public @interface MyAnnotation{

                 public String key()  default “LXX”;

                 public String value() default “HA”;

       }

 

如果没有设置内容,则将默认值去除继续使用。

 

Annotation中的变量内容可以通过枚举指定范围。

 public enum Color {

     RED,GREEN,BLUE;

}

12.31_学习Javaday13(详解) (一)静态成员内部类 可以有各种成员,没有限制 外部类名$静态内部类名.class 4种权限修饰符,final,static,abstract (二)非静态成员内部类 可以有非静态成员成员,有限制 或者静态常量 外部类名$非静态内部类名.class 4种权限修饰符,final,abstract (三)局部内部类 1、语法格式: 【修饰符】... 阅读详情

相关推荐

Day9-java字节码

推荐大家来知识盒子学大哥的课程

anwen12的博客 1036

2023最新面试题-Java-6

红黑树的构成

6个日的博客 954

Java高新技术4(注解与泛型)

1.注解(Annotation): /* 注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记, 没加,则等于没有某种标记,以后,javac编译器, 开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记, 看你有什么标记,就去干相应的事。 标记可以加在包,类,字段,方法,方法的参数以及局部变量上。 看java.lang包,可看到JDK中提供的最基本...

weixin_30362233的博客 91

[Spring] - Quartz定时任务 - Annotation

Spring + Quartz可以使用annoation方式:   1、AppJob类: package com.my.quartz.testquartz1; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; ...

weixin_34342578的博客 115

注解与注释

/** * This is demo * @deprecated This variable is for internal use only. It will * become package protected in future versions. * */public static final String DEFAULT_CONFIGURATION_FILE = "log4j.prop...

yanghuidang 211

SSM(十四) 基于annotation的http防重插件

SSM(十四) 基于annotation的http防重插件 前言 针对于我们现在常用的RESTful API通常我们需要对请求进行唯一标识,也就是每次都要带上一个请求号,如reqNO。 对于入库这种操作数据库的请求我们一般要保证他的唯一性,一个请求号通常只能用一次,所以需要我们对这种请求加上校验机制。 该需求的实现思路是通过自定义annotation,只给需要进行校验的

小鱼儿的博客 286

spring3使用task:annotation-driven开始定时

先看一个案例 package com.jCuckoo.demo; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; public class Singer { ...

132

java oval 使用_OVal

软件简介OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs 进行设定。可以使用纯 Java语言、JavaScript 、Groovy 、BeanShell 等进行规则的编写。示例代码:**private** **static** **class** TestEntity{@Min(1960)**private** **int** year...

weixin_39750854的博客 207

spring3使用task注记及task:annotation-driven解决定时问题

[b]定义一个定时操作[/b] package com.jCuckoo.demo; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; ...

飞扬的小菜鸟 302

优秀的学习网站汇总,不断更新…………

 http://www.jobedu.com.cn/archives/category/video (有很多免费的WEB开发视频,有javaSE、EE,flash等) http://www.riameeting.com/   RIA 下面两个讲的是annotation,有必要看一下http://zsy.javaeye.com/blog/165142http://hi

lhyundeadsoul的专栏 450

Java对象验证框架 OVal

 转载自:http://www.oschina.net/p/oval 如有侵权,敬请告知。     OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs 进行设定。可以使用纯 Java 语言、JavaScript 、Groovy 、BeanShell 等进行规则的编写。 示例代码: private static class ...

“因举报被劝退”学生:我愿做出头鸟 228

java 定时任务之一 @Scheduled注解(第一种方法)

使用spring @Scheduled注解执行定时任务: 运行!!! 关于Cron表达式(转载) 表达式网站生成: http://cron.qqe2.com/ 直接点击 作者:http://blog.csdn.net/supingemail/article/details/22274279 cronExpression定义时间规则,Cron表达式由6或7个空格分隔的时间字段组...

初学者的专栏 935

spring3.0定时器

from《Spring in Action3》 基于注解的sping3定时器配置 1.首先要在application-context.xml里面配置好namespace 和schema,如下: xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema...

breezylee09的专栏 139

用豆包辅助从头开始学习java spring cloud(三)

本文摘要(145字): 作者通过实践学习Spring Boot的核心配置机制,重点研究了@Configuration和@Bean注解的Full/Lite模式差异。创建User和Order实体类进行实验,通过配置类演示了两种模式下Bean创建行为的区别。特别关注了Full模式下proxyBeanMethods=true时,容器如何确保Bean单例特性。还探讨了@Conditional系列注解在自动配置中的应用,如@ConditionalOnClass和@ConditionalOnMissingBean,这些是

逸辰轩的博客 382

用豆包辅助从头开始学习java spring cloud(六)

这是 Spring Cloud 学习笔记(六),补全昨日项目:接入 Druid 连接池,新增用户增删改、分页接口并完成测试。讲解 MySQL 事务 ACID,通过转账案例实操`@Transactional`,验证 try‑catch 吞异常、本类 this 调用造成事务失效。介绍事务隔离级别、脏读等概念,梳理多种事务失效场景。强调事务依赖 AOP 代理,异常需向外抛出。明日计划学习 Redis 基础与缓存三大问题。

逸辰轩的博客 247
上一篇: 使用Cglib的BeanCopier实现Bean的拷贝
下一篇: linux的ntp服务器时间同步设置
dotedy
博客等级 码龄11年 61粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值