package cd.itcast.day2;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* 注解
*
* 注解的使用构成: 1,注解的申明 2,在类型(代码)上面打上注解 3,第三方的程序在使用打了注解的类型
*
* 作业:自己设计一套文档标签,如果我在一个类上面加了这些标签,我把这个类作为参数传给一个方法,就能为这个类的注释生成一个API文档文件
*
* @author Administrator
*
*/
public class AnnotationDemo {
/**
* 使用Annotation(使用反射来得到标签实例) <A extends Annotation> A getAnnotation(Class<A>
* annotationClass):得到指定类型的注解实例 Annotation[] getAnnotations():得到该类型上面的所有注释实例
* Annotation[] getDeclaredAnnotations() :返回直接存在于此元素上的所有注释。 boolean
* isAnnotation() : 该类型是否是一个标签类型(Class) boolean isAnnotationPresent(Class<?
* extends Annotation> annotationClass) :判断该类型上面是否有指定的标签类型
*
* @param args
*/
public static void main(String[] args) throws Exception {
Class<User> c = User.class;
// 说明:annotation也是一种类型
// Class a=MyAnn.class;
if (c.isAnnotationPresent(MyAnn.class)) {
System.out.println("hello");
MyAnn ann = c.getAnnotation(MyAnn.class);
System.out.println(ann.name());
System.out.println(Arrays.toString(ann.names()));
System.out.println(ann.resetDay());
OtherAnn other = ann.other();
System.out.println("other " + other.value());
} else {
System.out.println("fck");
}
Method m = c.getDeclaredMethod("getName");
if (m.isAnnotationPresent(MyAnn.class)) {
System.out.println("方法上面有标签");
}
}
/**
* @SuppressWanings:去掉警告,(去掉警告的类型写在后面括号里面) 标签有自己定义的能放置的位置
*/
@SuppressWarnings(value = "deprecation")
public void dateTest() {
Date d = new Date();
System.out.println(d.toLocaleString());
AnnotationDemo dd = new AnnotationDemo();
dd.someThing();
}
/**
* 标签里面可以有值, 1,一个常量值 2,一个数组
*
* @Deprecated:方法过时
*/
@SuppressWarnings({ "rawtypes", "unused" })
@Deprecated
public void someThing() {
List a = new ArrayList();
}
/**
* 注释一个标签。这个标签没有参数值
*
* @Override:代表当前方法是覆盖一个父类的方法
*/
@Override()
public String toString() {
return super.toString();
}
}
package cd.itcast.day2;
import java.lang.annotation.ElementType;
/**
* 自定义一个注释
* @author Administrator
*
* @Retention:规定定义的这个标签保留到什么时候
* @Target:规定定义的这个标签能加载哪些位置
* ANNOTATION_TYPE:标签上面
* Constructor:构造器上面
* Field:字段
* Local variable:局部变量
* METHOD:方法/方法的返回类型
* PACKAGE:包
* Parmater:方法参数
* TYPE:类/接口/枚举
*/
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnn {
/**
* 在标签里面加参数 类型 属性名称() [default 类型的值]
* 注意:如果在标签里面仅有value这个属性要填,在使用的时候就可以忽略不写
*/
String name() default "itcast";
String[] names() default {};
String value();
WeekDays resetDay();
OtherAnn other();
}
package cd.itcast.day2;
public @interface OtherAnn {
String value();
}
分享到:
相关推荐
Java面向对象(高级)-- 注解(Annotation)
在Spring中,我们可以使用XML配置文件来声明事务,但更常见的是通过Java注解来完成。这里我们将重点讨论Annotation注解方式。主要涉及的注解有`@Transactional`,`@Rollback`以及`@Transactional(propagation=...
### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...
4. `@Target`、`@Retention` 和 `@Documented`:这是Java的元注解,用来控制注解的可见性和生命周期。例如,`@Retention(RetentionPolicy.RUNTIME)` 表示注解会在运行时保留,使得Spring AOP可以在运行时识别并处理...
Java注解,也称为Annotation,是Java编程语言中的一种特性,用于向编译器、JVM或工具提供元数据。元数据是关于数据的数据,它提供了额外的信息,但不直接影响程序的执行。注解在代码中以`@注解名`的形式出现,主要...
Java 注解(Annotation)是自 JDK 5.0 版本引入的一种元数据机制,用于向编译器、开发工具和运行时系统提供有关代码的附加信息。它们并不直接影响程序的执行,但可以用于代码分析、编译时验证或者运行时处理。本文将...
Java注解Annotation用起来很方便,也越来越流行,由于其简单、简练且易于使用等特点,很多开发工具都提供了注解功能,不好的地方就是代码入侵比较严重,所以使用的时候要有一定的选择性。 这篇文章将利用注解,来做...
Java 注解(Annotation) - 请认准 ih0qtq
在描述中提到的"mybatis-generator-core-chinese-annotation-1.3.5-master.zip"是一个包含MBG中文注解版1.3.5版本的压缩包,旨在帮助开发者更方便地理解和使用这个工具。 MBG的核心功能在于根据数据库表自动生成...
Java注解(Annotation)是Java语言提供的一种元数据机制,用于向编译器或JVM提供额外的信息。这些信息可以用来验证代码、控制代码生成、配置应用等。注解是自Java 5版本引入的特性,它使得程序员可以在源代码中嵌入...
Java 注解(Annotation)是Java语言中的一个...总的来说,Java注解是一种强大的工具,可以增强代码的可读性、维护性和自动化处理能力。随着Java版本的升级,注解的使用越来越广泛,成为现代Java开发不可或缺的一部分。
### Java注解系统扩展——JSR 308 #### 引言 JSR 308 提案旨在对 Java 的注解系统进行扩展,使其能够应用到几乎任何类型的使用场景上。相比于 Java SE 6 只允许在类、方法、字段或变量声明处使用注解,JSR 308 ...
注解(Annotation)是Java中的元数据,它为编译器和JVM提供了有关代码的附加信息。注解可以用于代码的编译时检查、运行时处理、文档生成等。常见的注解有@Override、@Deprecated、@SuppressWarnings等,还可以自定义...
Java 5.0引入了一项重大创新,那就是Annotation(注解),这是一项强大的元数据机制,使得程序员可以在代码中嵌入信息,以供编译器、JVM或工具在编译时或运行时处理。这篇博客是关于Java 5.0新特性——Annotation的...
Java Annotation注解技术是自Java SE 5.0版本引入的一种元编程机制,它允许程序员在源代码的各个层面(如类、方法、变量等)添加元数据,以供编译器、JVM或第三方工具在编译时或运行时进行处理。Annotation简化了...
### Java 注解Annotation实例上手文档 #### 一、引言与基础知识 Java注解(Annotation)自JDK 5.0引入以来,已经成为Java语言的重要特性之一,它为代码元数据提供了一种标准化的方式,使得编译器、工具和其他框架...
在IT行业中,注解(Annotation)是Java编程语言中的一个重要特性,它允许程序员在代码中嵌入元数据,为编译器、解释器或者其他的工具提供额外的信息。这些信息可以用于代码的验证、编译时处理、运行时反射等操作。在...
Java Annotation(注解)是自JDK 5.0开始引入的一种元数据,它提供了一种安全、非侵入式的方式来向编译器、虚拟机或者其他的工具提供关于代码的信息。这种信息可以用来进行编译时检查、运行时处理、代码生成等。注解...