注解定义和使用
注解定义为:
public @interface AnnotationName{
}
使用注解
@ AnnotationName
public void func(){
}
Java提供了4个元注解
@Retention:保留的阶段。
@Target:注解修饰的目标,可以说类,方法,成员变量,包。
@Documented:是否被javadoc提取成文的。
@Inherited:注解是否能继承。
自定义注解
注解的成员变量定义:
public @interface AnnotationName{
String name() default "abc";
int age() default 33;
boolean flag();
}
其中default修饰的表示默认值。
- 注意:Annotation修饰类,方法,成员变量后不会自己生效,不会对程序有任何影响。只有为这些注解提供处理的工具类才会有用。
实例
定义注解类
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Testable {
boolean isSkiped() default false;
String name();
}
被注解修饰的类
public class Foo {
public static void m1() {
System.out.println("I am m1");
}
@Testable(isSkiped = false, name = "methond2")
public static void m2() {
System.out.println("I am m2");
}
@Testable(name = "methond3")
public static void m3() {
System.out.println("I am m3");
}
@Testable(isSkiped = true, name = "methond4")
public static void m4() {
System.out.println("I am m4");
}
}
处理注解的工具类
import java.lang.reflect.*;
public class TestAnnotation {
public static void main(String[] args) throws SecurityException,
ClassNotFoundException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException {
for (Method m : Class.forName("Foo").getMethods()) {
if (m.isAnnotationPresent(Testable.class)) {
System.out.print(m.getName()
+ " is Annotation element, so invoke result is: ");
m.invoke(null);
} else {
System.out.println(m.getName() + " is not Annotation element");
}
}
}
}
输出:
m1 is not Annotation element
m2 is Annotation element, so invoke result is: I am m2
m3 is Annotation element, so invoke result is: I am m3
m4 is Annotation element, so invoke result is: I am m4
wait is not Annotation element
wait is not Annotation element
wait is not Annotation element
equals is not Annotation element
toString is not Annotation element
hashCode is not Annotation element
getClass is not Annotation element
notify is not Annotation element
notifyAll is not Annotation element
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
Java注解Annotation用起来很方便,也越来越流行,由于其简单、简练且易于使用等特点,很多开发工具都提供了注解功能,不好的地方就是代码入侵比较严重,所以使用的时候要有一定的选择性。 这篇文章将利用注解,来做...
Java注解(Annotation)是Java语言提供的一种元数据机制,用于向编译器或JVM提供额外的信息。这些信息可以用来验证代码、控制代码生成、配置应用等。注解是自Java 5版本引入的特性,它使得程序员可以在源代码中嵌入...
Java注解(Annotation)自JDK 5.0引入以来,已经成为Java语言的重要特性之一,它为代码元数据提供了一种标准化的方式,使得编译器、工具和其他框架能够理解和处理这些元数据。在Java中,注解是一种元数据,可以被...
Java注解,也称为 Annotation,是Java编程语言中的一种元数据机制,用于向编译器、JVM(Java虚拟机)或工具提供有关代码的信息。这些信息可以用来进行编译时检查、运行时处理,或者作为配置信息。注解不是程序的一...
Java 5引入的注解(Annotation)是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器、JVM或其他工具在编译时或运行时使用。注解可以用来简化代码,提高可维护性,并帮助工具进行静态分析。 1. ...
Java 1.5 引入了一种新的元编程机制——注解(Annotation),极大地增强了代码的可读性和可维护性。注解是一种在代码中添加元数据的方式,它允许程序员在源代码上添加一些信息,这些信息可以被编译器或运行时环境...
### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...
Java 注解(Annotation) - 请认准 ih0qtq
Java注解(Annotation)是Java语言的一个重要特性,它为元数据提供了强大的支持。元数据是一种描述数据的数据,可以提供有关代码的附加信息,而这些信息并不直接影响代码的执行。在Java中,注解用于向编译器、JVM或...
Java Annotation注解技术是自Java SE 5.0版本引入的一种元编程机制,它允许程序员在源代码的各个层面(如类、方法、变量等)添加元数据,以供编译器、JVM或第三方工具在编译时或运行时进行处理。Annotation简化了...
Java.Annotation注解.part4
如果你想知道java annotation是什么?你可以看看
Java.Annotation注解.part3
Java.Annotation注解.part2
Java.Annotation注解.part1
Java注解,也称为Annotation,是Java编程语言中的一种特性,用于向编译器、JVM或工具提供元数据。元数据是关于数据的数据,它提供了额外的信息,但不直接影响程序的执行。注解在代码中以`@注解名`的形式出现,主要...
在实际开发中,Java注解被广泛用于Spring框架的依赖注入、JPA的实体映射、JSF的UI组件绑定等场景,极大地提高了代码的可维护性和灵活性。然而,对于更复杂的注解使用,如自定义注解生成XML映射文件,需要更深入的...
Java Annotation(注解)是自 Java 5.0 开始引入的一种语言元素,它为开发者提供了在代码中添加元数据的能力。简单来说,注解就像是对代码进行标记或注释的方式,这些标记可以在编译时或者运行时被读取并执行特定的...