Java注解的理解_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java注解的理解

Java注解的理解

 2014/4/22 12:33:40  xingguangsixian  程序员俱乐部  我要评论(0)
  • 摘要:这两天想搭一个纯粹使用注解的ssm框架,于是就看了看mybatis注解的使用方式,但是感觉java中底层注解平时不常使用都忘得差不多了,于是就重新看了一遍.这里简单记录下1.Java中开发自定义注解类,2.自定义注解类的使用,3.自定义注解类的解析一.自定义注解类开发packagecom.star.frame.annotation;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention
  • 标签:

这两天想搭一个纯粹使用注解的ssm框架,于是就看了看mybatis注解的使用方式,但是感觉java中底层注解平时不常使用都忘得差不多了,于是就重新看了一遍.
这里简单记录下1.Java中开发自定义注解类,2.自定义注解类的使用,3.自定义注解类的解析

一.自定义注解类开发

?

class="java">package com.star.frame.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)
public @interface Name {
  String id () default "1";
  String value() default "";
  int len() default 100;
  String[] properties() default {"p1","p2"};
  Class<? extends Object> type() default String.class;
}

?

?

理解:1.注解类与接口相似,里面只能定义静态常量和抽象方法;它与接口,枚举,类属于同一层次,都被称作一种类型。

? ? ? ? ? 2.java底层中提供的注解有两种:(1)常用的基本注解:@SuppressWarnings,@Deprecated,@Override(2)元注解:@Retention,@Target

? ? ? ? ? 3.注解类的使用范围由@Retention决定,分三种:

RetentionPolicy.SOURCE:指定注解只保留在源文件当中,编译成类文件后就把注解去掉。

RetentionPolicy.CLASS:指定注解只保留在源文件和编译后 class 文件中,当jvm加载类时就把注解去掉。

RetentionPolicy.RUNTIME:指定注解可以保留在jvm中,这样就可以使用反射获取信息了。

默认保留在类中文件中,所以使用时一般要指定保存到RetentionPolicy.RUNTIME中

? 4.可以使用注解的元素类型由@Target决定,分为以下几种:

ElementType.TYPE:说明该注解只能被声明在一个类前。

ElementType.FIELD:说明该注解只能被声明在一个类的字段前。

ElementType.METHOD:说明该注解只能被声明在一个类的方法前。

ElementType.PARAMETER:说明该注解只能被声明在一个方法参数前。

ElementType.CONSTRUCTOR:说明该注解只能声明在一个类的构造方法前。

ElementType.LOCAL_VARIABLE:说明该注解只能声明在一个局部变量前。

ElementType.ANNOTATION_TYPE:说明该注解只能声明在一个注解类型前。

ElementType.PACKAGE:说明该注解只能声明在一个包名前

不写则默认可以使用于所有元素类型。

二.自定义注解类的使用

package com.star.frame.annotation;

public class Use {

	@Name(id="name1",len=50,properties={"a","b"},value="test")
	public boolean getName(String id,int len ,String[] properties,String value){
		System.out.println(id);
		System.out.println(len);
		System.out.println(properties[0]+properties[1]);
		System.out.println(value);
		return true;
	}
}

?理解:注解的使用方法

? ? ? ? 1.@注解名:一般使用于有默认值的注解

? ? ? ? 2.@注解名(方法名=方法返回值) :使用于没有默认值的注解,此时必须制定值

? ? ? ? 3.@注解名(方法名=方法返回值,方法名={返回值1,返回值2}) :使用于方法返回数组类型的注解

? ? ? ? 4.@注解名(返回值) :使用于只有value方法的注解,可以只写返回值

?

三.自定义注解类的解析

public class Parse {

	public void parseMethod(Class clzz) throws Exception{
		Object o = clzz.getConstructor(new Class[]{}).newInstance(new Object[]{});
		Method[] methods = clzz.getDeclaredMethods();
		for (Method method : methods) {
			Name nameClzz = method.getAnnotation(Name.class);
			if(nameClzz != null){
				String id = nameClzz.id();
				String value = nameClzz.value();
				int len = nameClzz.len();
				String[] props = nameClzz.properties();
				Class< ? extends Object> clz = nameClzz.type();
				method.invoke(o,id,len,props,value);
			}
		}
		
	}
	
}

?理解:当解析注解的时候,一般通过getAnnotation 或 getAnnotations 来获取类,方法,属性的注解类。从而使用反射进行处理

?

以上就是对于java注解使用方法的简单总结,此中有些理解的用法是参考一些博客总结出来的,作为自己的积累使用。

?

?

?

?

  • 相关文章
发表评论
用户名: 匿名