J2SE 5.0的三种内置注释类型

转载 2007年10月11日 23:50:00

注解(annotation)J2SE 5.0的新内容,它给我们提供了很好的编程支持,下面介绍一下其内置的三种注解类型:

1. @Override
@Override
用在多态情况下,比如:

public abstract class Animal{

    public void say(){

       System.out.println("annimal is saying");

    }

}

public class Cat extends Animal{

     @Override

     public void say(){

         System.out.println("miao, miao");

     }

}
通过@Override来告诉java编译器,say方法是重载的父类的方法,这样,当父类的say方法签名改名的话,比如增加了一些参数,那么子类的Cat中的say方法编译时就会报错,说没有正确的重载父类方法,所以,@Override可以帮我们验证程序的正确性,这一点,很有用。

 

2. @Deprecated

@Deprecated的意思和JavaDoc中的@deprecated注释在本质上是一样的,使用如下:

public class DeprecatedExample {

@Deprecated

    public static void badMethod() { }

}

public class DeprecatedUser {

public static void main(String[] args){

       DeprecatedExample.badMethod();

    }

}

上面的代码如果用javac进行编译的话,会打印出如下信息:

Note: DeprecatedUser.java uses or overrides a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

1 error

如果你按提示重新加-Xlint进行编译,你就可以得到错误的详细信息:

% javac -Xlint:deprecation

DeprecatedUser.java:3: warning: [deprecation] badMethod() in DeprecatedExample

has been deprecated

DeprecatedExample.badMethod();

需要注意的是:和javadoc中的@deprecated相比,@Deprecated并没有强大多少,因为它不支持参数,而@deprecated后面还可以跟字符串来给一些相关的信息,但@Deprecated做不到,但它提供了运行时自省的功能,来提示错误,所以建议@Deprecated@deprecated同时使用。

 

3. @SuppressWarnings

顾名思义,就是抑制警告信息的出现,使用如下:

public class DeprecatedExample2{

@Deprecated

    public static void foo() { }

}

public class DeprecatedUser2 {

@SuppressWarnings(value={"deprecation"})

    public static void main(String[] args) {

       DeprecatedExample2.foo();

    }

}
上述@SuppressWarnings(value={"deprecation"})的作用就是抑制编译器报deprecation的错。

@SuppressWarnings(value={"deprecation"})
只支持一个参数,是数组类型,所以你可以不用加value, 写成:@SuppressWarnings({"deprecation"});当想抑制多个类型的警告信息时,可写:@SuppressWarnings({"unchecked","fallthrough",deprecation"}).

注意:在JDK1.5.0 release中,@SuppressWarnings还没有得到完全支持,会在以后支持,但Sun并没有给出具体的时间。

 

Java使用eclipse新建枚举报出, 项目“xxxxx”不是符合 J2SE 5.0 的项目。的解决办法

在eclipse新建的枚举报出 项目“XXXX”不是符合 J2SE 5.0 的项目。这样的 错误,结果可能是编译器的版本的问题,也可能是你JDK版本的 问题。解决这个问题你可以按照如下的步骤来实现: ...
  • he_min
  • he_min
  • 2015年09月02日 20:44
  • 1279

Android面试之J2SE基础

Android面试之J2SE基础
  • chun0801
  • chun0801
  • 2016年07月04日 21:11
  • 2277

J2EE和J2se的区别

不管是J2ee还是J2se,都是Java为不同用户提供的不同服务,也就是通过提供不同类型的类库满足不同用户的需求。 一、概述          j2se、j2ee和J2me是Java2平台的三个版本。...
  • YSC1123
  • YSC1123
  • 2015年01月10日 07:51
  • 7375

JDK、J2EE、J2SE、J2ME的区别

你对JDK、J2EE、J2SE、J2ME概念是否了解,这里和大家分享一下JDK、J2EE、J2SE、J2ME的概念以及他们的关系区别,相信本文介绍一定会让你有所收获。JDK,J2EE,J2SE,J2M...
  • wangyunzhong123
  • wangyunzhong123
  • 2016年06月02日 13:40
  • 2785

J2SE知识大汇总

现阶段正在准备软考,需要学习Java版的设计模式,于是学习J2SE成为了最先的准备,了解Java基本语法,为更好的学习设计模式打基础。        Java2平台包括:标准版(J2SE(Stan...
  • liujiahan629629
  • liujiahan629629
  • 2013年09月09日 09:52
  • 4910

J2SE基础常见面试题目

/* 本系列文章收录了一些网友及自己在面试过程中遇到的常见J2SE问题,希望能对参加面试的朋友有所帮助,如果大家有好的题目也可以向我提出,本文将不断地维护更新,感谢。 */ 1. 九种基本数据类型...
  • qq_15062527
  • qq_15062527
  • 2015年10月03日 17:14
  • 1050

用Eclipse将J2SE项目打包成可运行的jar包(Runnalbe JAR file)

前面有一篇文章讲了如何使用Eclipse导出jar包的时候包含第三方的jar包,在Eclipse中打包引用了第三方jar包的J2SE项目成jar文件的方法,使用这个方法当引用的第三方jar包非常多的时...
  • shiyong1949
  • shiyong1949
  • 2016年10月08日 14:15
  • 674

深入解析JAVA细节(J2SE)

JAVA SE Lesson 1 1. 类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念。先有类,然后由类来生成对象(Object)。对象又叫做实例(Instance)。 2. 类由...
  • daijope
  • daijope
  • 2013年10月19日 13:08
  • 832

【J2SE】JDK、JRE、JVM三者间的关系

一、Java程序运行机制及运行过程 Java两种核心机制: ①Java虚拟机(Java Virtual Machine) ②垃圾收集机制(Garbage collection) 二、核心机制之Jav...
  • qq_26545305
  • qq_26545305
  • 2016年12月04日 16:04
  • 559

Java面试题(1)-J2SE基础

最近在为自己实习准备,看了网上各种面试经验贴,也和身边的小伙伴一起参加了不少牛逼IT企业的面试,这篇文章就将面试遇到的一些比较常见的问题整理一下,给大家一些参考,也为自己整理整理。J2SE基础1.九种...
  • dingji_ping
  • dingji_ping
  • 2016年04月03日 20:06
  • 1443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:J2SE 5.0的三种内置注释类型
举报原因:
原因补充:

(最多只允许输入30个字)