`

注解类详解

 
阅读更多

核心注解类TestAnnotation.java

package annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

//元注解
@Retention(RetentionPolicy.RUNTIME)
//注解可以应用于方法上和类上
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface TestAnnotation {
	//属性(default 默认值)
	String color() default "blue";
	String value();
	int[] arr();
	TrafficLamp tl() default TrafficLamp.GREEN;
	//注解属性
	MetaAnnotation metaAnno() default @MetaAnnotation("sss");
	Class clazz() default String.class;

}

 方法上定义注解AnnotationMethodTest.java 

package annotation;

import org.junit.Test;

//方法上定义注解
public class AnnotationMethodTest {
	@Test
	@TestAnnotation(value = "methodTest",arr = {1,2,3},tl = TrafficLamp.RED,metaAnno = @MetaAnnotation("abc"),clazz = Integer.class)
	public void test_1(){
		if(AnnotationTest.class.isAnnotationPresent(TestAnnotation.class)){
			TestAnnotation ta = AnnotationTest.class.getAnnotation(TestAnnotation.class);
			System.out.println(ta);
			System.out.println(ta.getClass());
			System.out.println(ta.value());
			System.out.println(ta.arr().length);
			System.out.println(ta.tl());
			System.out.println(ta.metaAnno().value());
		}
		
	}
}

 类上定义注解及测试类

package annotation;

import org.junit.Test;

//只有value属性声明的时候可以省略"value="
@TestAnnotation(value = "test",arr = {1,2,3},tl = TrafficLamp.RED,metaAnno = @MetaAnnotation("abc"),clazz = Integer.class)
public class AnnotationTest {
	@Test
	public void test_1() throws Exception{
		if(AnnotationTest.class.isAnnotationPresent(TestAnnotation.class)){
			TestAnnotation ta = AnnotationTest.class.getAnnotation(TestAnnotation.class);
			System.out.println(ta);
			System.out.println(ta.getClass());
			System.out.println(ta.value());
			System.out.println(ta.arr().length);
			System.out.println(ta.tl());
			System.out.println(ta.metaAnno().value());
		}
		AnnotationMethodTest amt = new AnnotationMethodTest();
		if(amt.getClass().getMethod("test_1").isAnnotationPresent(TestAnnotation.class)){		
			TestAnnotation ta = amt.getClass().getMethod("test_1").getAnnotation(TestAnnotation.class);
			System.out.println(ta);
			System.out.println(ta.getClass());
			System.out.println(ta.value());
			System.out.println(ta.arr().length);
			System.out.println(ta.tl());
			System.out.println(ta.metaAnno().value());		
		}
	}
}

 

分享到:
评论

相关推荐

    Kotlin 的注解类详解及实例

    Kotlin 注解类详解及实例 Kotlin 的注解类详解及实例是 Kotlin programming language 中的一种 metadata 附加方式,通过使用 annotation 来附加元数据到代码中。下面是 Kotlin 注解类的详解及实例。 声明注解 要...

    springmvc常用注解标签详解

    SpringMVC 中常用的注解标签详解 在 SpringMVC 框架中,注解标签扮演着非常重要的角色,它们使得开发者可以轻松地定义控制器、请求映射、依赖注入等内容。在本文中,我们将详细地解释 SpringMVC 中常用的注解标签,...

    spring注解使用详解

    【Spring注解使用详解】 Spring框架自2.5版本开始,引入了注解配置,使得开发者可以在不依赖XML配置文件的情况下实现Bean的定义和依赖注入。注解配置因其简洁、直观的特点,逐渐成为主流的配置方式。在本文中,我们...

    spring3注解详解

    可以用于类级别或方法级别,类级别的注解作用于所有方法,方法级别的则只对单个方法生效。 8. `@GetMapping`、`@PostMapping`、`@PutMapping`、`@DeleteMapping`:这些是`@RequestMapping`的简化版,分别对应HTTP的...

    Hibernate4.0注解配置详解.docx

    Hibernate4.0注解配置详解,Hibernate4.0注解配置详解,Hibernate4.0注解配置详解

    (转)Spring 3.0 注解注入详解

    首先,注解注入允许我们通过在类的字段或方法上使用特定的注解来声明依赖关系,而不是在XML配置文件中进行声明。主要的注解包括`@Autowired`、`@Qualifier`、`@Required`和`@Value`等。 1. **@Autowired**:这是...

    SpringMVC 常用注解类视频详解

    1. `@Controller`:这是定义一个类作为Spring MVC控制器的基本注解。当Spring容器扫描到这个注解时,它会将此类实例化,并处理其方法以响应HTTP请求。 2. `@RequestMapping`:用于映射HTTP请求到控制器方法。它可以...

    hibernate注解详解

    在Hibernate中,注解是用于替代传统的XML配置文件,以元数据的形式标注在类、属性或者方法上,实现对象与数据库表之间的映射。本文将深入探讨Hibernate中的注解,帮助你更好地理解和应用它们。 1. **实体注解(@...

    Hibernate注解详解

    每个持久化POJO类都是一个实体Bean, 通过在类的定义中使用 @Entity 注解来进行声明。 声明实体Bean @Entity
public class Flight implements Serializable {
 Long id;
 @Id
 public Long getId() { return id;...

    JAVA 注解示例 详解

    - `@Inherited`:使子类继承父类的注解,但这仅适用于类注解,不适用于方法或字段。 5. **注解的应用场景**: - **代码生成**:如Lombok库使用注解生成getter、setter等方法。 - **依赖注入**:Spring框架利用...

    python多线程 实例 注释详解

    python 多线程 实例 注释详解

    hibernate注解配置详解

    ### Hibernate注解配置详解 #### 一、概述 Hibernate 是一款强大的对象关系映射(ORM)框架,它简化了Java应用程序与数据库之间的交互过程。在Hibernate中,通过使用注解来定义实体类与数据库表之间的映射关系,...

    java注解详解[文].pdf

    注解可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用于对这些元素进行说明、注释。它的作用非常多,如进行编译检查、生成说明文档、代码分析等。 基本注解 JDK 提供的几个基本注解: 1. `@...

    Java利用反射如何查找使用指定注解的类详解

    "Java利用反射如何查找使用指定注解的类详解" 在Java中,反射机制是指在程序运行期检查和修改类、方法、变量的能力。Java中的反射机制主要通过Java.lang.reflect包来实现。反射机制可以帮助我们在代码中动态地加载...

    JPA注解说明 详解

    1. **@Entity(name="EntityName")**:此注解标记一个Java类为一个实体类,它对应数据库中的一个表。`name`参数是可选的,用于指定实体在数据库中的表名,若不指定则默认使用类名。 2. **@Table(name="", catalog="...

    JPA注解详解

    **JPA注解详解** Java Persistence API(JPA)是一种Java平台上的标准,用于管理和持久化对象关系映射(ORM)。在JPA中,注解是声明性编程的一部分,允许开发者在实体类上直接定义数据存储相关的元数据,简化数据库...

    spring注解的详解及实例

    ### Spring注解详解及实例分析 #### 概述 随着技术的发展与演进,Spring框架在不断迭代过程中引入了大量的注解来简化应用的配置过程。相比于传统的XML配置方式,注解配置提供了更为简洁且直观的方式来定义Bean以及...

    activitidemo代码详解,全面注释,开发利器

    activitidemo代码详解,全面注释,开发利器activitidemo代码详解,全面注释,开发利器activitidemo代码详解,全面注释,开发利器activitidemo代码详解,全面注释,开发利器activitidemo代码详解,全面注释,开发利器...

Global site tag (gtag.js) - Google Analytics