`

Java常用的三个Annotation

阅读更多
Annotation其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用annotation,程序开发人员可以在不改变原有逻辑的情况下,在源文件嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。
annotation提供可一条为程序元素设置元数据的方法,从某种方面来看,annotation就像修饰一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量。

annotation必须使用工具来处理,工具负责提取annotation里包含的元数据,工具还会根据这些元数据增加额外的功能。java提供的三个基本annotation的用法;使用annotation时要在其前面增加@符号,并把该annotation当成一个修饰使用,用于修饰它支持的程序元素。
三个基本的annotation如下:

1.@Override
2.@Deprecated
3.@suppressWamings


1.限定重写父类方法 @Override
因为@Override的作用是告诉编译器检查这个方法,并从父类查找是否包含一个被该方法重写的方法,否则就编译出错。这个annotation主要是帮助我们避免一些低级错误。
@Override只能用于作用于方法,不能用于作用于其他程序元素。如下程序:
public class Fruit {
	
	public void foo(){
		System.out.println("水果的info方法...");
	}
}

class Apple extends Fruit{
	
	@Override
	public void foo() {
		// TODO Auto-generated method stub
		super.foo();
	}
}


2.标识已过时 @Deprecated
@Override用于表示某个程序元素(类、方法等)已过时,当其他程序使用已过时的类、方法时,编译器就会给出警告。如下面程序:
public class Fruit {
	
	@Deprecated
	public void foo(){
		System.out.println("水果的info方法...");
	}
}

class Apple extends Fruit{
	
	@Override
	public void foo() {
		// TODO Auto-generated method stub
		super.foo();
	}
}

上面程序中粗体字代码使用了apple类的info方法,而apple类中定义info方法时使用了@Deprecated,表名该方法已过时。所以程序中粗体代码将会引起编译器的警告。
@Deprecated annotation的作用与文档注释中的@deprecated标记的作用基本相同,但他们的用法不同,前者是JDK1.5才支持的注解,无须放在文档注释语法(/**...*/部分)中,而是直接用于修饰程序中的程序单元,如方法、接口等。

3.抑制编译器警告:@suppressWamings
@suppressWamings指示被annotation标识的程序元素(以及在该程序元素中的所有子元素)取消显示指定的编译器警告。@suppressWamings会一直作用于该程序元素的所有子元素,例如使用@suppressWamings标识一个类来取消显示某个编译器警告,同时又标识该类里某个方法取消显示另一个编译器的警告,那么将在此方法中同时取消显示两个编译器警告。
通常情况下,如果程序中没有泛型限制的集合将会引起编译器警告,为了避免这种编译器警告,可以使用
import java.util.ArrayList;
import java.util.List;
@SuppressWarnings(value="unchecked")
public class SuppressWamingsTest {
	
	public static void main(String[] args) {
		List list = new ArrayList();
	}
}

程序中粗体字代码使用@suppressWamings来关闭SuppressWamingsTest里的所有编译器警告,编译上面程序时将不会看到任何编译器警告。如果删除程序中粗体字代码,将会在程序中看到编译器警告。
0
0
分享到:
评论

相关推荐

    org.aspectj.lang.annotation.Around所需要的包

    java错误-java.lang.ClassNotFoundException: org.aspectj.lang.annotation.Around Spring的AOP需要上述三个jar包

    JAVA_API1.6文档(中文)

    javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序...

    Java中三种标准注解和四种元注解.pdf

    Java5.0定义了4个标准的meta-annotation类型,它们被⽤来提供对其它 annotation类型作说 明。Java5.0定义的元注解:  1.@Target,  2.@Retention,  3.@Documented,  4.@Inherited  这些类型和它们所⽀持的类在...

    jakarta.annotation-api-1.3.5.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    Java 1.6 API 中文 New

    javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序...

    java7源码-Android-Annotation-Study:Android注解生成代码

    了解这方面的知识有助于我们深入理解一些框架,下面就以模仿AndroidAnnotations中三个注解特性来详细说明。 注解布局文件,@EActivity(layout_id); 注解控件,@ViewById; Activity初始化,@AfterViews。 定义一个...

    JavaAPI1.6中文chm文档 part1

    javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序...

    JAVA上百实例源码以及开源项目

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    java api最新7.0

    javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序...

    JAVA上百实例源码以及开源项目源代码

     QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理类,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA...

    java元注解.docx

    在Java中,元注解(Meta-Annotation)是一种特殊类型的注解,用于注解其他注解。元注解提供对注解的元数据进行定义和控制的能力。Java中提供了几个预定义的元注解,用于定制和修改注解的行为。让我们详细介绍一下...

    JavaAPI中文chm文档 part2

    javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的协定的 API,它允许事务管理器添加或删除 JTA 事务中的资源对象(由资源管理器驱动程序...

    NoAnP:用于确保覆盖方法的 Java Annotations 和 Annotation Processer

    无安普Java Annotations 和 Annotation Processer 用于确保覆盖方法。 ##注释|注释|概述| |---|---|---| |@克隆| 如果这个注解被添加... 如果您想在三个方法未被覆盖时编译失败,请将级别设置为error 。 如果您不想收到

    java开源包11

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包6

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包9

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包101

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包4

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

Global site tag (gtag.js) - Google Analytics