码迷,mamicode.com
首页 > 编程语言 > 详细

java --自定义注解的使用

时间:2015-03-29 10:52:42      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:注释   jdk   

Annotaton(注解)是jdk5.0后引入的,先今很多主流框架都支持注解。

注解一般用于创建文档,跟踪代码中的依赖以及编译检查。以@注解名存在


jdk中常用的注解有

@Override         覆盖超类中方法

@Deprecated       被废弃的代码

@suppressWarings  警告

 

还有一些用于专门创建自定义的注解


自定义注解

@Target       应用注解位置:字段,方法,类..

@retemtop      使用级别,runtime classsource

@Documente    是否被包含在javadoc

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

 

定义一个注解目的还是在于使用,使用注解最主要的部分在于对注解的处理,那么就会涉及到注解处理器。从原理上讲,注解处理器就是通过反射机制获取被检查方法上的注解信息,然后根据注解元素的值进行特定的处理。

根据我们上节了解到的反射机制


 我们做一个注解的定义和使用


1定义注解类

importjava.lang.annotation.ElementType;
importjava.lang.annotation.Retention;
importjava.lang.annotation.RetentionPolicy;
importjava.lang.annotation.Target;
 
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interfaceUseCase {
 
    public String name();
    public String desciption() default "no description";
}

2定义用户类

package com.bjpower.node.spring;
public class User {

	private String userName;
	private String password;

	@UseCase(name = "password", desciption = "密码")
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@UseCase(name="userName",desciption="用户名")
	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public User() {

	}

	public User(String username) {
		this.userName = username;
	}

}

3获取注解类方法

 public static void getrefect(String clas){
		
		 try {
			Class<?> cls = Class.forName(clas);//反射获取类的Class对象
			Method [] methods = cls.getDeclaredMethods();//获取类的所有方法
			
			for (Method method : methods) {
				//判断方法上是否有指定的注解,有则获取注解进行打印
				if(method.isAnnotationPresent(UseCase.class) == true){
					UseCase usercase = method.getAnnotation(UseCase.class);//获取注解类
					System.out.println("用户信息:"+ usercase.name()+" 用户描述:"+usercase.desciption() );
					
				}
			}
 		} catch (Exception e) {
			e.printStackTrace();
		}
	}

4客户端测试

public class Client {

	public static void main(String[] args) {

		getrefect("com.bjpower.node.spring.User");
	}
}

测试结果:


用户信息:password用户描述:密码

用户信息:userName用户描述:用户名

 

小结:


注解的解析是利用反射,动态的解析的,相比注释,他有自己独特的优点,我们可以对某些字段或方法进行特别说明来对页面信息进行展示。



java --自定义注解的使用

标签:注释   jdk   

原文地址:http://blog.csdn.net/han_yankun2009/article/details/44724611

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!