java中注解例子,使用反射做测试

原创 2016年06月01日 16:46:06

上一篇博客中讲解了java中注解如何工作的,这章主要讲解自定义注解的例子。

此例子中有三个文件User.java、FieldAnnotation.java、FieldAnnotationTest.java,下面直接上源码。

/**
 * 
 */
package com.test.annotations;


public class User {

	private int id;
	private String name;
	private int age;
	private String country;

	public User(int id, String name, int age, String country){
		this.id = id;
		this.name = name;
		this.age = age;
		this.country = country;
	}
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getCountry() {
		return country;
	}

	public void setCountry(String country) {
		this.country = country;
	}

}

package com.test.annotations;

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

@Documented
@Target(value = { ElementType.FIELD,ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface FieldAnnotation {
	public int id() default 1;
	public String name() default "zhangsan";
	public int age() default 18;
	public String country() default "china";
}

/**
 * 
 */
package com.test.annotations;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.lang.reflect.Field;


public class FieldAnnotationTest {

	//注解的使用
	@FieldAnnotation(id = 2014, name = "james", age = 20, country = "usa")
	public Object obj;
	
	public User user;

	public static void main(String[] args) throws Exception {
		Field objField = FieldAnnotationTest.class.getField("obj");
		FieldAnnotation fa = objField.getAnnotation(FieldAnnotation.class);// 得到注解,起到了标记的作用

		System.out.println("-----------obj-------------------");
		System.out.println(fa.id() + "," + fa.name() + "," + fa.age() + "," + fa.country());
		System.out.println("-----------obj-------------------");
		
		//把注解中值赋给user对象
		FieldAnnotationTest tm = new FieldAnnotationTest();
		Field userField = FieldAnnotationTest.class.getField("user");
		userField.set(tm, new User(fa.id(),fa.name(),fa.age(),fa.country()));
		
		System.out.println("-----------user-------------------");
		System.out.println(tm.user.getId() + "," + tm.user.getName() 
				+ "," + tm.user.getAge() + "," + tm.user.getCountry());
		System.out.println("-----------user-------------------");
		
		//注解能获得注解自己的注解
		Target t = fa.annotationType().getAnnotation(Target.class);
		ElementType[] values = t.value();
		for(ElementType etype:values){
			System.out.println(etype.toString());
		}
	}
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java关于注解使用的例子

  • 2013年03月29日 16:50
  • 67KB
  • 下载

Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)

利用反射和注解模拟JUnit4单元测试框架工作流程。

Java反射+注解实现自动持久化小例子(代码未优化)

需要实现的功能:根据实体类自动生成Sql语句与参数。 基本思路是:在实体类上标识注解,使用反射读取注解然后拼接Sql语句。   哦了,开始研究代码~ 有请主人公注解:  ...

java反射运用学习测试例子

ReflectTest.java package test; import java.beans.IntrospectionException; import java.beans.Property...

关于java注解比较详细的例子

  • 2010年09月01日 10:52
  • 2KB
  • 下载

java 自定义注解例子

  • 2016年04月19日 10:45
  • 7KB
  • 下载

枚举,注解,实体类,单元测试,反射对象字段------------举例使用

/**  * 定义一个枚举,枚举多用来存放常量,是一种数据类型  * @author Administrator  *  */ public enum Myenum { RED,BLUE,...

servlet反射注解例子

  • 2016年10月13日 17:12
  • 28KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中注解例子,使用反射做测试
举报原因:
原因补充:

(最多只允许输入30个字)