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里的所有编译器警告,编译上面程序时将不会看到任何编译器警告。如果删除程序中粗体字代码,将会在程序中看到编译器警告。
分享到:
相关推荐
Java 5引入的注解(Annotation)是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器、JVM或其他工具在编译时或运行时使用。注解可以用来简化代码,提高可维护性,并帮助工具进行静态分析。 1. ...
Java SSH项目是基于三个主要框架——Struts、Spring和Hibernate构建的企业级Web应用程序。这个项目中,Hibernate作为ORM(对象关系映射)工具被用来处理数据库操作,而使用了注解方式来配置Hibernate,这是一种更加...
#### 三、Java Annotation 的应用场景与示例 - **示例一**:使用注解记录需求改进的信息。 ```java /** * DescribestheRequest-For-Enhancement(RFE)thatled * tothepresenceoftheannotatedAPIelement. */ ...
在Java中,注解用于向编译器、JVM或第三方工具提供有关类、接口、方法、变量等的声明信息,帮助进行编译时检查、运行时处理或自动生成代码等任务。 注解的语法结构由`@`符号开头,后面跟着注解的类型,例如`@...
Java注解(JDK5)是Java编程语言中的一个重要特性,自Java 5版本开始引入。注解(Annotation)提供了一种元数据的形式,允许程序员在代码中嵌入额外的信息,这些信息可以被编译器、JVM或者专门的处理工具在编译时或...
在"java annotation demo"中,我们将探讨如何创建和使用注解以及如何通过反射来获取和处理这些注解。 首先,注解的定义通常使用`@interface`关键字。例如,我们创建一个简单的`MyAnnotation`注解: ```java public...
在Java编程语言中,注解(Annotation)是一种元数据,它提供了在编译时或运行时处理代码的一种方式。通过注解,开发者可以向编译器或JVM提供有关代码的附加信息,而这些信息通常不直接影响程序的执行,但可以用于...
Java Annotation 是 JDK5.0 引入的一种元数据机制,它允许程序员在代码中嵌入额外的信息,这些信息可以被编译器、构建工具或运行时系统用来执行特定的任务。Annotation 提供了一种安全、灵活的方式来描述代码的属性...
在Java中,注解以`@`符号开头,后面跟着注解的名称。例如,`@Override`表示该方法重写了父类的方法。注解有预定义的系统注解(如`@Override`, `@Deprecated`, `@ SuppressWarnings`等)和自定义注解两种类型。自定义...
注解在Java中主要用于编译器检查、运行时处理、框架生成元数据等场景。本篇将深入探讨Java注解的基本概念、类型以及如何使用。 一、注解的定义与分类 1. 定义:Java注解是一种特殊的声明,可以附加到类、接口、...
4. **标准Annotation**:Java 5.0引入了三个标准Annotation,包括`@Override`、`@Deprecated`和`@ SuppressWarnings`。`@Override`指示方法重写父类方法,`@Deprecated`标记不再推荐使用的代码,`@SuppressWarnings`...
在定义了Annotation之后,就可以在Java代码中使用它了。例如: ```java @MyAnnotation(value = "Hello, World!") public class MyClass { // 类体 } ``` 这段代码表示`MyClass`类被`MyAnnotation`注解修饰,并...
Annotation在Java中扮演着一种注解的角色,提供了一种声明式编程的手段,简化了诸如代码生成、持久化、验证等任务。 一、Annotation的基本概念 1. Annotation类型:Annotation类型实际上是一种接口,它定义了...
有SOURCE、CLASS和RUNTIME三个策略。 - `@Documented`:指示是否将注解包含在JavaDoc文档中。 - `@Inherited`:使子类继承父类的注解,但只有`@Inherited`的注解才能被继承。 3. **注解的属性与默认值** - 注解...
Java Annotation注解技术是自Java SE 5.0版本引入的一种元编程机制,它允许程序员在源代码的各个层面(如类、方法、变量等)添加元数据,以供编译器、JVM或第三方工具在编译时或运行时进行处理。Annotation简化了...
元数据在编程中扮演着至关重要的角色,尤其是在Java中,通过注解(Annotation)这一特性,元数据被广泛应用于多个方面,包括但不限于文档生成、代码分析以及编译时的检查。尽管元数据作用的分类并未有固定的标准,但...
Annotation,即注解,是Java 5.0引入的一项重要特性,它为代码元数据的存储提供了一个全新的维度。注解允许开发者以标准化的方式来标记代码元素,如类、方法、变量等,而不影响其实际运行逻辑。注解的本质是一个特殊...
它可以取三个枚举值之一:`SOURCE`、`CLASS`、`RUNTIME`。 - `SOURCE`:只存在于源代码中,编译后会被丢弃。 - `CLASS`:存在于编译后的字节码中,但在运行时不可见。 - `RUNTIME`:存在于编译后的字节码中,并且...