`
Luob.
  • 浏览: 1588911 次
  • 来自: 上海
社区版块
存档分类
最新评论

Java 之注解浅谈

    博客分类:
  • Java
阅读更多
package com.enhance.Annotaion;

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

import com.enhance.enumeration.TrafficLamp;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface MyAnnotation {
	
	//如果这个注解只有一个value属性,那么在使用注解的时候前面的value=可以省略
	String value();
	
	//如果这个注解有 默认的值,那么在使用注解的时候可以不用赋值.否则 必须赋值
	String color() default "blue"; 
	
	int[] arrayAttr() default {3,4,4};
	
	TrafficLamp lamp() default TrafficLamp.RED;
	
	MetaAnnotaion annotationAtrr() default @MetaAnnotaion("hibernate");
	
	Class classAttr() default MyAnnotation.class;
}


原注解
package com.enhance.Annotaion;

public @interface MetaAnnotaion {
	String value();
}


package com.enhance.Annotaion;

import java.util.Arrays;

import com.enhance.enumeration.TrafficLamp;

@MyAnnotation(annotationAtrr=@MetaAnnotaion("Spring"),color="yellow",value="abc",arrayAttr=4,lamp=TrafficLamp.YELLOW)  //如果数组属性的值只有一个,可以省略 {}
//@MyAnnotation(color="yellow",value="abc",arrayAttr={1,2,3})  //一点加入了标注,就表示创建了这个类的对象
public class AnnotationTest {
	
	@MyAnnotation("money")  //这里是给 value属性赋值
	public static void main(String[] args){
		//对应用注解的类,使用反射进行操作
		if(AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)){
			//如果这个类中存在这个注解 就进行 相应的操作
			MyAnnotation annotation=(MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);
			System.out.println(annotation.color());  //yellow
			System.out.println(annotation.value());  //abc
			System.out.println(Arrays.toString(annotation.arrayAttr()));  //给数组复制
			System.out.println(annotation.lamp().nextLamp().name());
			System.out.println(annotation.annotationAtrr().value());
		}
	}
}



//说明
十、	注解
a)	@ SuppressWarnings(“deprecation”):禁止显示警告
b)	@Deprecated:让某个方法过时
c)	@Override:重写的时候最好加上
d)	注解标记可以加在 包,类,字段,方法,方法的参数,局部变量上.
e)	注解的应用
i.	定义注解类 	public @interface MyAnnotation
ii.	应用注解类 @MyAnnotation
iii.	对应用注解类的类进行反射操作的类
f)	@Retention(RetentionPolicy.RUNTIME):定义注解类的生命周期Source,Class,Runtime
g)	@Target({ElementType.METHOD,ElementType.TYPE}):标记我们的注解可以应用的在那些成员上(Type: class)
h)	给自定义注解加如属性
i.	可以省略名称的 value()
ii.	定义简单类型属性  String ;如果 可选设置的话,必须加上 缺省default 值
iii.	定义 数组属性   int[] arrayAttr;如果只有一个值的时候,可以省略{}
iv.	定义 枚举类型的数组  TrafficLamp [] lamp() default TrafficLamp.RED;
v.	定义 注解类型的的属性
vi.	定义 Class 类型


0
1
分享到:
评论

相关推荐

    java之浅谈深说--教你如何成长

    ### Java之浅谈深说——教你如何成长为Java编程高手 在IT行业中,Java作为一种广泛使用的编程语言,其重要性不言而喻。对于希望成为Java编程高手的学习者来说,掌握正确的学习路径至关重要。本文将根据提供的标题、...

    浅谈spring 常用注解

    浅谈Spring常用注解 浅谈Spring常用注解是Spring框架中的一些基本概念,了解这些概念对于 MASTERING SPRING Framework非常重要。本文将对Spring中常用的注解进行分类和介绍,并对每个注解的使用进行解释。 一、...

    浅谈JAVA软件开发的几大误区.pdf

    Java的设计理念是简洁和可维护,但初学者往往觉得其冗长的类库和繁琐的注解令人望而生畏。理解Java的核心概念,如封装、继承和多态,以及合理选择和运用框架,可以帮助开发者减少困惑。 其次,忽视性能优化是另一个...

    浅谈Java软件测试.zip

    1. JUnit:Java中最常用的单元测试框架,支持注解驱动的测试编写。 2. TestNG:提供了更高级的功能,如并发测试、灵活的测试配置和报告。 3. Mockito:用于创建和管理模拟对象,帮助进行单元测试。 4. Selenium:...

    浅谈计算机软件开发的JAVA编程语言.pdf

    JAVA Annotation技术允许开发者通过注解将属性和变量相结合,进而整合为一个完整的机制。这在解决计算机程序联机机制问题方面提供了技术支持,同时有助于提高代码的管理和维护效率。JDBC技术,即JAVA Database ...

    浅谈SSH学习要点

    首先,我们来看Struts,它是MVC框架的代表之一。基础部分,你需要理解Action、ActionForm和配置文件。Action是业务逻辑处理的主要类,ActionForm用于封装用户输入的数据,而配置文件(通常为struts-config.xml)则...

    浅谈计算机软件开发中JAVA编程语言的应用.pdf

    Annotation技术是Java中用于提供元数据的一种机制,它能够为代码的元素(类、方法、变量等)添加注释信息。这些信息在编译阶段或者运行时能够被工具读取,用来生成代码、做框架控制等。而远程方法调用(Remote ...

    浅谈java运用注解实现对类中的方法检测的工具

    Java 注解是 Java 语言的一种特殊的注释方式,它可以在编译期或运行期对代码进行检查和处理。在本文中,我们将介绍如何使用 Java 注解来实现对类中的方法检测工具。 首先,我们需要创建一个自定义的注解 @Test,该...

    浅谈Java中注解Annotation的定义、使用、解析

    Java注解是一个强大的工具,可以用于简化代码的元数据管理,提高代码的可读性和可维护性。自定义注解使得开发人员能够创建特定于领域的标记,这在构建框架、库或进行代码分析时特别有用。在上述示例中,`@MyTable`和...

    浅谈Java 三种方式实现接口校验

    Java接口校验是Java开发中一个非常重要的topic,本文将为大家介绍Java三种方式实现接口校验,包括AOP、MVC拦截器等方式,并对每种方式的实现进行详细的分析和讲解。 一、AOP方式实现接口校验 AOP(Aspect-Oriented...

    浅谈使用java实现阿里云消息队列简单封装

    浅谈使用java实现阿里云消息队列简单封装 本文主要介绍了使用Java实现阿里云消息队列的简单封装,包括对阿里云消息队列的介绍、设计方案、消息发送和接收的实现等。 一、阿里云消息队列简介 阿里云提供了两种消息...

    浅谈MyBatis-Plus学习之ActiveRecord.docx

    AR 模式的核心思想是,一个 Java 类对应数据库中的一个表,类的实例对应表中的一条记录。通过 AR,开发者可以以面向对象的方式进行数据的增删改查(CRUD)操作,无需编写大量的 SQL 语句。 在 MP 中,启用 AR 支持...

    浅谈java8中map的新方法--replace

    根据Javadoc的注释,这个方法的实现等同于以下代码: ```java if (map.containsKey(key)) { return map.put(key, value); } else { return null; } ``` 在JDK 8之前的版本,如果你想要实现类似的功能,你需要写更...

    java基础PPT

    11. **JNI与JVM原理**:浅谈Java Native Interface(JNI),用于在Java程序中调用本地(非Java)代码,以及JVM的工作原理,包括类加载、内存管理和垃圾收集。 12. **案例分析**:可能包含一些简单的编程实例,帮助...

    浅谈spring注解之@profile

    ```java @Service("productRpc") @Profile("prod") public class ProductRpcImpl implements ProductRpc { public String productBaseInfo(Long sku) { return productResource.queryBaseInfo(Long sku); } } @...

    浅谈springBoot注解大全

    @Configuration 注解用于定义配置类,等同于 Spring 的 XML 配置文件,使用 Java 代码可以检查类型安全。 八、@ComponentScan 注解 @ComponentScan 注解用于自动发现和装配一些 Bean。 九、@...

Global site tag (gtag.js) - Google Analytics