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

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

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

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

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. phpstorm xdebug 无法断点调试问题

    最近用phpstorm+xdebug调试一段php代码的时候莫名其妙的无法切入断点调试 本地用的php集成环境是UPUPW ANK V1.1.7 64Bit 选择了集成环境中php版本为7.1.x 搞 ...

  2. 个人项目-WC.exe (Java实现)

    一.Github项目地址:https://github.com/blanche789/wordCount/tree/master/src/main/java/com/blanche 二.PSP表格 P ...

  3. JVM运行机制(非原创)

    文章大纲 JVM基本概念 JVM的体系结构 JVM启动流程 一.JVM基本概念 Java虚拟机(JVM)是可运行Java代码的假想计算机 Java虚拟机包括类加载器.一组寄存器.方法区.一个垃圾回收堆 ...

  4. [20190523]修改参数后一些细节注意2.txt

    [20190523]修改参数后一些细节注意2.txt --//上午想模拟链接遇到的情况,链接http://blog.itpub.net/267265/viewspace-2645262/--//就是修 ...

  5. PHP接口自动化测试框架实现

    在上一份工作中,我有一部分工作是在维护一套接口自动化测试,这一篇文章,我来介绍这套接口自动化框架的设计思路. 我们来看一个简单的PHP实现的超简单的接口. ... //报名验证 private fun ...

  6. 比hive快10倍的大数据查询利器presto部署

    目前最流行的大数据查询引擎非hive莫属,它是基于MR的类SQL查询工具,会把输入的查询SQL解释为MapReduce,能极大的降低使用大数据查询的门槛, 让一般的业务人员也可以直接对大数据进行查询. ...

  7. 在PyCharm中打开文件的位置

    选中文件,右键选择  Show in Explorer (在资源管理器中显示) 只需要路径时,选择第四个Copy Path ,会复制文件的路径

  8. [PHP] PDO对象与mysql的连接超时

    在php中每一个new的PDO对象,都会去连接mysql,都会创建一条tcp连接.当pdo对象赋予的变量是一个的时候,那么他只会保持一个tcp连接,没有被引用的对象连接会直接断掉.如果不对这个对象进行 ...

  9. C++中的传值与传址

    在指针的传递中,也涉及到传值与传址的问题.下面通过一个函数进行说明. 代码如下: bool openBinary(uchar* buffer) { ; buffer = (uchar*)malloc( ...

  10. 19.Java基础_封装概念