对于软件程序的开发经过了三个发展过程:

    —— 将所有配置相关的内容直接写到代码之中

    —— 将配置与代码程序独立,将程序运行的时候根据配置文件进行操作

    —— 配置信息对用户透明且无用,将配置信息写回代码之中,但是利用一些明显的标记来区分配置信息与程序

Annotation是JDK1.5+最大的特性,利用注解的形式来实现程序功能的不同功能的实现

在Java SE中支持自定义Annotation的开发,并且提供了三个最常用的基础:

  @Override  @Deprecate  @SupperssWarnings

1、@Override 【准确的覆写】

  如果在输出对象的时候,希望其可以返回需要的内容,那么一定要进行 toString 方法的覆写。

class Book {
public String tostring() { //该方法的目的是覆写toString方法
//但是由于 该方法和Object类中的toString定义不同,无法实现覆写
return tostring ;
}
}

上例代码,由于没有按照覆写的格式定义覆写方法,所以无法完成覆写toString方法的功能,但是编译器不会报错,因为tostring方法的定义符合普通方法的定义要求。(结果会返回对象码)

为了告诉编译器,tostring() 应该是覆写的方法,可以加上“@Override”;可以明确的告诉编译器,这个方法是覆写方法;如果编译器发现该方法不是覆写方法则会报错。

class Book {
@Override
public String tostring() { //该方法的目的是覆写toString方法
//但是由于 该方法和Object类中的toString定义不同,无法实现覆写
return "tostring" ;
}
}
public class TestDemo {
public static void main(String [] args) {
System.out.println(new Book());
}
}

只有当tostring()按照正确的方法覆写后则不会在出现报错~~~

class Book {
@Override
public String toString() {
return "tostring" ;
}
}
public class TestDemo {
public static void main(String [] args) {
System.out.println(new Book());
}
}

##

出现@Override注解,则表示下一行的方法为覆写方法,如方法未实现覆写功能则会报错!

——————————————————

2、@Deprecat【声明过期操作】

  如果有一个功能包,里面有一个类;在该类中有一个fun()方法,在初期该方法非常的完善,但后期发现fun()方法有功能不足之处。

  选择一:取消掉fun()方法,同时设置fun()新的方法

  选择二:保存原fun()方法,但是会通过途径告诉别人此方法有问题,并提供新的fun()方法供开发者使用

  在实际开发当中,很明显后者优于前者!!!

  使用 @Deprecat 声明:

class Book {
@Deprecat
public void fun() {}
}
public class TestDemo {
public static void main(String [] args) {
System.out.println(new Book().fun());
}
}

在IDE开发环境下,会字面上的对@Deprecat声明过的方法加删除线;目的就是告诉其他人,该方法以及过期,不必在使用。对于新旧代码功能的交替开发非常有益。

——————————————

3、@SuppressWarnings【压制(多个)警告】

  部分程序会引发警告,而自己又不需要这些警告提醒!则可以利用 @SuppressWarnings 取消警告提示。

——————————————————

Java的 Annotation 新特性的更多相关文章

  1. [转] Java 8的新特性

    简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性.在本文中我们将学习这些新特性,并用实际的例子 ...

  2. Java 8的新特性—终极版

    作者:杜琪[译] 原文链接:http://www.jianshu.com/p/5b800057f2d8 1. 简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本 ...

  3. Java 9和Java 10的新特性

    http://www.infoq.com/cn/news/2014/09/java9 Java 9新特性汇总 继2014年3月份Java 8发布之后,Open JDK加快了开发速度, Java 9的发 ...

  4. Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结

    Atitit..jdk java 各版本新特性 1.0 1.1 1.2 1.3 1.4 1.5(5.0) 1.6(6.0) 7.0 8.0 9.0 attilax 大总结 1.1. Java的编年史2 ...

  5. JDK 15 JAVA 15的新特性展望

    目录 JEP 371: Hidden Classes JEP 372: 删除 Nashorn JavaScript Engine JEP 377: 新的垃圾回收器ZGC正式上线了 JEP 378: T ...

  6. Java SE 6 新特性: Java DB 和 JDBC 4.0

    http://www.ibm.com/developerworks/cn/java/j-lo-jse65/index.html 长久以来,由于大量(甚至几乎所有)的 Java 应用都依赖于数据库,如何 ...

  7. Java SE 6 新特性: 编译器 API

    新 API 功能简介 JDK 6 提供了在运行时调用编译器的 API,后面我们将假设把此 API 应用在 JSP 技术中.在传统的 JSP 技术中,服务器处理 JSP 通常需要进行下面 6 个步骤: ...

  8. Java 8 的新特性和改进总览

    这篇文章是对Java 8中即将到来的改进做一个面向开发者的综合性的总结,JDK的这一特性将会在2013年9月份发布. 在写这篇文章的时候,Java 8的开发工作仍然在紧张有序的进行中,语言特新和API ...

  9. java 各版本新特性

    Java 5,6,7,8,9,10,11新特性吐血总结 lkd_whh关注赞赏支持 12018.04.01 14:09:15字数 1,948阅读 10,615 作者:拔剑少年 简书地址:https:/ ...

随机推荐

  1. netcore之RabbitMQ入门

    简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息中间件,基于Erlang语言编写. AMQP是什么 AMQP 0-9-1(高级消息队列协议)是一种消息传递协议,它允许一致的客户端应 ...

  2. [b0024] python 归纳 (十)_线程 _Thread模块

      #!/usr/bin/pythonn # -*- coding: UTF-8 -*- """ 学习线程 thread 总结: 1. 主线程退出,所有子线程都退出 2. ...

  3. TypeScript 学习笔记(二)

    块级作用域变量: 1.不能在被声明前读或写 console.log(num); let num: number = 0; // 报错 2.仍然可以在一个拥有块级作用域的变量声明前通过函数捕获它,但不能 ...

  4. 将select 转为json

    CREATE PROCEDURE[dbo].[WXSP_SerializeJSON](@ParameterSQL AS VARCHAR(MAX))ASBEGIN DECLARE @SQL NVARCH ...

  5. [视频教程] 包管理器方式安装使用openresty新手上路

    OpenResty是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库.第三方模块以及大多数的依赖项.用于方便地搭建能够处理超高并发.扩展性极高的动态Web应用.Web ...

  6. 如何在VIM中保存编辑的只读文件

    我们经常碰到这样的情景:在VIM中编辑了一个系统配置文件,当需要保存时才发现当前的用户对该文件没有写入的权限, 这时候怎么办呢? 当需要保存时,输入以下的命令: :w !sudo tee %

  7. jqs实现图片轮播--通过点击按钮来实现

    <!-- 布局思路:一个大的div,中有一个ul.和一个箭头的div css样似描述: 整个盒子距离顶部100px,又水平居中 盒子的宽高为图片的实际宽高 由于每次都是看见了一张图片:有两种方式 ...

  8. Vue工程化入口文件main.js中Vue.config.productionTip = false含义

    阻止启动生产消息,常用作指令.通俗理解为消息提示的环境配置. 阻止启动生产消息 這又是什麽意思? 看下效果 (1)Vue.config.productionTip = false (2)Vue.con ...

  9. 四,专著研读(K-近邻算法)

    四,专著研读(K-近邻算法) K-近邻算法有监督学习距离类模型, k-近邻算法步骤 计算已知类别数据集中的点与当前点之间的距离 按照距离递增的次序进行排序 选取与当前点距离最小的K个点 确定前k个点出 ...

  10. TeamyinyinFish->鱼嘤嘤小分队软件工程beta迭代作业

    Github项目的链接 github工作组链接 github后台部分项目代码,issue提交在这个项目 github小程序前端部分项目代码链接 scrum会议时间 链接 第十一周 十一周博客 第十二周 ...