您的位置:首页 > 编程语言 > Java开发

java --自定义注解的使用

2015-03-29 10:09 393 查看
Annotaton(注解)是jdk5.0后引入的,先今很多主流框架都支持注解。
注解一般用于创建文档,跟踪代码中的依赖以及编译检查。以@注解名存在

jdk中常用的注解有

@Override 覆盖超类中方法

@Deprecated 被废弃的代码

@suppressWarings 警告


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

自定义注解

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

@retemtop 使用级别,(runtime
,class,source)

@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用户描述:用户名

小结:

注解的解析是利用反射,动态的解析的,相比注释,他有自己独特的优点,我们可以对某些字段或方法进行特别说明来对页面信息进行展示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: