Java 注解 入门

这几天在学习Spring3.x,发觉现在许多框架都用上了java注解功能,然后自己就对java注解这方面初步学习了一下。

首先,注解跟注释不是一个意思,也根本不是同一个事物。

注释就是我们平常平常中对代码作解释的,也就是常见的"//..........."和"/*..............*/",相信大家也很熟悉,这里就不多说了。

对于注解,可以说是一个非常有用的技术,何为注解,其实注解就是作为一种描述,是对代码的一种描述,并且是可以读取的,可以是在程序运行时写进文件的的一种对代码的描述。(个人理解)

我们平常在一些IDE(如Eclipse)编写代码过程中,可能会遇过一些代码有下波浪线或者是中间穿一条线的代码,会告诉你不提倡使用这个方法,说这个方法可能会在以后的版本中被淘汰之类的提示语,

其实这就是注解在帮助你。

因为在java5.0(jdk1.5)后,java默认内置了@Deprecated注解,他的存在就是上述的功能,除此之外还有还有@Override,@SuppressWarnings,至于其他两个的作用,大家就自己去探索啦。

注解的强大之处,就是我们可以自定义自己需要的注解!

首先,注解跟类,接口一样,都是一种类型

定义一个注解的用法跟定义接口差不多,区别是多了一个@:

@interface MyAnnotation{

String value() default "NULL";

}

这样就定义了一个属于你自己的注解了。

注解本身也是代码,当然也有注解可以描述注解。

这个读起来有点怪异,但是这个是一个重要的特征,注解的注解就是描述注解的作用范围,生存范围的。

对注解的描述有四种,包括:

@Target({ElementType.METHOD})//描述注解的作用范围,ElementType.METHOD是参数,表示只能作用于方法,例如

@MyAnnotation()  //这是错误的

public class AnnotataionTest{

@MyAnnotataion() //这是正确的

public void test(){

}

}

其余三种,作用如下:


@Retention


表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括:

SOURCE:注解将被编译器丢弃

CLASS:注解在class文件中可用,但会被VM丢弃

RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息。


@Document


将注解包含在Javadoc中


@Inherited


允许子类继承父类中的注解

自定义注解又有什么用?怎么用呢? 

 对于注解的使用,我就使用自己编写的一个例子,有什么不好的地方大家轻拍- -#

首先,新建一个自定义注解

package my.annotation.i;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
String value() default "NULL";
}

然后写一个测试注解的类

package my.annotation.impl;

import my.annotation.i.MyAnnotation;

public class AnnotationTest {
@MyAnnotation("This is method 1")
	public String method1(String s){
	System.out.println("method1 is invoked,params is "+s);
	return s;
	}
   public String method2(String s){
	   System.out.println("method2 is invoked,params is "+s);
	   return s;
   }
   @MyAnnotation("This is method 3")
   public String method3(String s){
	   System.out.println("method3 is invoked,params is "+s);
	   return s;
   }
}

 最后写一个Client,注解就大显身手了

package my.annotation.client;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
import my.annotation.i.MyAnnotation;
import my.annotation.impl.AnnotationTest;
public class Client {
public static void main(String[] args) throws Exception{
	Class cs = Class.forName("my.annotation.impl.AnnotationTest");
	        Method[] methods = cs.getDeclaredMethods();
	        for(Method method:methods){
	        	if(method.isAnnotationPresent(MyAnnotation.class)){
	        		MyAnnotation aTest = method.getAnnotation(MyAnnotation.class);
	        	    method.invoke(cs.newInstance(),aTest.value());
	        	}
	        }
}
}

 输出如下:

method1 is invoked,params is This is method 1
method3 is invoked,params is This is method 3

这是我对java注解的初步了解,可能有什么错误的地方,大家谅解- -#

时间: 2024-10-05 11:21:57

Java 注解 入门的相关文章

Java注解入门

注解的分类 按运行机制分: 源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnings) 运行时注解:能在程序运行时起作用(如spring的依赖注入) 按来源分: 来自JDK的注解 第三方的注解 自定义的注解 自定义注解   如下实例给出了自定义注解的基本方法 1 package com.flypie.annotations; 2 3 import java.lang.annotatio

Java 注解入门实例 && 注解传参

参考 概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法 JDK内置系统注解: @Override 用于修饰此方法覆盖了父类的方法; @Deprecated 用于修饰已经过时的方法; @Suppvisewarnings 用于通知java编译器禁止特定的编译警告. 注解按照运行机制划分 源码注解:注解只在源码中存在,编译成.class文件就不存在了: 编译时注解:注解在源码和.class文件中都存在(例:JDK自带注解): 运行时注解:在运行阶段还起作用,甚至会影响运行逻辑

java注解入门(含源码下载)

注解(Annotation)是从jdk1.5开始增加的特性.学习注解能够读懂框架的代码:让编程更加简洁,代码更加清晰. 注解概念:java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法. 注解需要import java.lang.annotation.*; java自带的3个注解: @Override//覆盖 @Deprecated//过时 @SuppressWarnings()//抑制警告 自定义注解的语法要求 一般自定义注解的代码如下://“Description 注解”在下面

Java注解(入门)

注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据. -------------------------------------------------------------------------------------------------------------------------------------------- 1.定义注解: package com.test; import java.lang.annotat

深入理解Java:注解(Annotation)自己定义注解入门

深入理解Java:注解(Annotation)自己定义注解入门 要深入学习注解.我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前.我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其它注解. Java5.0定义了4个标准的meta-annotation类型.它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected], [email protected], [email pro

[2]注解(Annotation)-- 深入理解Java:注解(Annotation)自定义注解入门

转载 http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 深入理解Java:注解(Annotation)自定义注解入门 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.J

(转载)深入理解Java:注解(Annotation)自定义注解入门

深入理解Java:注解(Annotation)自定义注解入门 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected], [email protected], [email prote

JAVA - Annotation 注解 入门

Java注解提供了关于代码的一些信息,但并不直接作用于它所注解的代码内容.在这个教程当中,我们将学习Java的注解,如何定制注解,注解的使用以及如何通过反射解析注解. Java1.5引入了注解,当前许多java框架中大量使用注解,如Hibernate.Jersey.Spring.注解作为程序的元数据嵌入到程序当中.注解可以被一些解析工具或者是编译工具进行解析.我们也可以声明注解在编译过程或执行时产生作用. 在使用注解之前,程序源数据只是通过java注释和javadoc,但是注解提供的功能要远远超

java注解详细-----入门篇

一.注解入门 JDK自带注解:@Override  ,  @Deprecated  , @Suppresswarnings 常见的第三方注解:Spring框架:@Autowired  , @Service  , @Repository Mybatis框架:@InsertProvider  , @UpdateProvider  , @Options 二.注解分类 a. 按照运行机制分 b. 按照来源分 原文地址:https://www.cnblogs.com/bzsz-quan/p/9188745