Java为我们提供了三种Annotation方便我们开发。

1 Override-函数覆写注解

如果我们想覆写Object的toString()方法,请看下面的代码:

 class AnnotationDemo
{
private String info;
public AnnotationDemo(String info)
{
this.info = info;
} public String tostring()
{
return "info的值是:" + this.info;
}
} public class Main
{
public static void main(String[] args)
{
AnnotationDemo ad = new AnnotationDemo("你好");
System.out.println(ad);
System.out.println("Main Done//~~");
}
}

上面的代码,我们期望能在AnnotationDemo类中覆写toString()方法,结果在运行的时候发现,程序调用的是Object的toString方法。原因是,我们的函数代码编写有瑕疵,将本应是toString()的方法名写成了tostring().该bug在我们运行代码后才能暴露出来。如果我们在tostring()上加上@Override注解,就可以显示的告诉JAVA编译器,我的函数是要覆写父类方法,请执行检查。请看代码:

 package main;

 class AnnotationDemo
{
private String info;
public AnnotationDemo(String info)
{
this.info = info;
} @Override
public String tostring()
{
return "info的值是:" + this.info;
}
} public class Main
{
public static void main(String[] args)
{
AnnotationDemo ad = new AnnotationDemo("你好");
System.out.println(ad);
System.out.println("Main Done//~~");
}
}

上面的代码不能通过编译。

2 Depreced-方法过期注解

如果我们在方法上用@Depreced注解,那么就是告诉用户,这个方法已经不推荐使用了。如下面的代码:

 class AnnotationDemo
{
private String info;
public AnnotationDemo(String info)
{
this.info = info;
} @Deprecated
public void showInfo()
{
System.out.println(this.info);
} @Override
public String toString()
{
return "info的值是:" + this.info;
}
} public class Main
{
public static void main(String[] args)
{
AnnotationDemo ad = new AnnotationDemo("你好");
System.out.println(ad);
System.out.println("Main Done//~~");
}
}

上面的代码在编译的时候会警告用户,showInfo()方法已经不推荐使用了。

3  @SuppressWarning-压制警告

压制警告的意思是,当我们代码有警告信息的时候,而我们不认为该警告会对我们的代码造成威胁,此时可以用@SuppressWarning将警告的提示信息取消。

 @SuppressWarnings("serial")
class AnnotationDemo implements Serializable
{
private String info;
public AnnotationDemo(String info)
{
this.info = info;
} @Deprecated
public void showInfo()
{
System.out.println(this.info);
} @Override
public String toString()
{
return "info的值是:" + this.info;
}
}

上面的代码实现了Serializable接口,该接口需要类中有一个serialVersionUID字段已标志不同的版本。而实际上我们不需要这个字段,那么在类上将该警告压制住,编译器就不会在提示警告信息了。

Java中三种常见的注释(注解) Annotation的更多相关文章

  1. java中三种常见内存溢出错误的处理方法

    更多 10   相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的 ...

  2. java中三种常见内存溢出错误的处理方法(good)

    相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决j ...

  3. Android应用开发中三种常见的图片压缩方法

    Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 一.质量压缩法 private Bitmap com ...

  4. 关于Java中泛型、反射和注解的扫盲篇

    泛型 泛型概念   泛型是在JDK1.5之后引入的,旨在让我们写出更加通用化,更加灵活的代码.通用化的手段在于让数据类型变得参数化,定义泛型时,对应的数据类型是不确定的,泛型方法被调用时,会指定具体类 ...

  5. 005、Java中使用文档注释

    01. 代码如下: package TIANPAN; /** * 此处为文档注释 * @author 田攀 微信382477247 */ public class TestDemo { public ...

  6. Java中的反射和注解

    前言 在Java中,反射机制和注解机制一直是一个很重要的概念,那么他们其中的原理是怎么样呢,我们不仅仅需要会使用,更要知其然而之所以然. 目录 反射机制 反射如何使用 注解定义 注解机制原理 注解如何 ...

  7. java中的Annotation

    java中包含5个基本的Annotation: @Override @Deprecated @SuppressWarnings @SafeVarargs @FunctionalInterface …… ...

  8. Java中Lambda表达式的使用

    简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能.本人建议不要乱用,因 ...

  9. Java中Lambda表达式的使用(转)

    https://www.cnblogs.com/franson-2016/p/5593080.html 简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖" ...

随机推荐

  1. Javascript设计模式之装饰者模式详解篇

    一.前言: 装饰者模式(Decorator Pattern):在不改变原类和继承的情况下动态扩展对象功能,通过包装一个对象来实现一个新的具有原对象相同接口的新的对象. 装饰者模式的特点: 1. 在不改 ...

  2. jquery中这句 .stop(false,true); 什么意思

    .stop 是jQuery中用于控制页面动画效果的方法.运行之后立刻结束当前页面上的动画效果.stop在新版jQuery中添加了2个参数:第一个参数的意思是是否清空动画序列,也就是stop的是当前元素 ...

  3. (二)Python是一门什么样的语言?

    在学习python是一门什么样的语言之前首先需要知道什么是编译和解释? 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快; 而 ...

  4. Java8 HashMap之tableSizeFor

    Java8对许多内置的容器进行了优化与拓展,其中对HashMap的改变尤其大.之后将进行总结. 最近在看HashMap的源码时,发现了里面好多很不错的算法,相比Java7从性能上提高了许多.其中tab ...

  5. mysqldump 备份直接至压缩文件,提高备份及压缩时间

    1.备份及压缩分开 备份mysqldump --single-transaction -hlocalhost --all-databases --triggers --routines --event ...

  6. android 蓝牙连接与通讯(Bluetooth)

    最近做了一个小项目,关于蓝牙的一个智能硬件.其中涉及到了蓝牙模块的操作.特记下蓝牙模块的操作过程.只记录下关于蓝牙部分的操作,具体业务逻辑不涉及其中.重点是记录下蓝牙的扫描.链接.通讯. 在使用蓝牙模 ...

  7. 安卓---apk反编译

    转自:http://blog.csdn.net/vipzjyno1/article/details/21039349 在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮 ...

  8. 用python3实现linux的sed功能

    sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换.删除.新增.选取等特定工作.现在用python简单实现sed的主要命令,将old_text替换为ne ...

  9. Java 后台sql注入

    JdbcTemplate.update(sql, ArrayList.toArray()) Connection conn = null; PreparedStatement ps = null; c ...

  10. fiddler还是浏览器的问题

    当我在浏览器里输入http://localhost/infomanage/price?cityid=1&cateid=246&timer=3 后端接收的参数是timer的时候,浏览器会 ...