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());
		}
	}
}




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

通过反射注解批量插入数据到DB

批量导入思路,最近遇到一个需要批量导入数据问题。后来考虑运用反射做成一个工具类,思路是首先定义注解接口,在bean类上加注解,运行时通过反射获取传入Bean的注解,自动生成需要插入DB的SQL,根据设...
  • u013673976
  • u013673976
  • 2015年03月26日 10:07
  • 1429

Java反射实例

  Java反射经典实例 Java Reflection Cookbook Java提供了一套机制来动态执行方法和构造方法,以及数组操作等,这套机制就叫——反射。反射机制是如今很多流行框架的实现基础,...
  • xuan_oscar
  • xuan_oscar
  • 2007年04月30日 21:07
  • 5061

Java之反射、枚举、内省、注解

一:反射技术:          1.概述:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,                        并将字节码文件中的内容...
  • AlanHand
  • AlanHand
  • 2014年09月02日 00:49
  • 1884

Java注解处理之反射API

java.lang.reflect 包下主要包含一些实现反射功能的工具类,实际上,java.lang.reflect 包所有提供的反射API扩充了读取运行时Annotation信息的能力。当一个Ann...
  • liuxigiant
  • liuxigiant
  • 2017年01月09日 23:23
  • 682

Java使用反射和注解实现参数校验

使用场景: 保存对象之前都要进行参数校验,例如非空校验,长度校验等,一个个字段来校验的话非常繁琐,使用注解可以灵活的进行参数校验。 直接上代码了 /** * 用于校验前端传输的...
  • hzx_abge
  • hzx_abge
  • 2017年05月09日 17:00
  • 945

java机制学习——反射,注解,代理,泛型

java机制——反射,注解,代理,泛型
  • hdkjdhdj
  • hdkjdhdj
  • 2016年11月08日 15:17
  • 680

JAVA反射实例详解与介绍

我们都知道Java反射很重要,这次我来抛个砖头!!! 一:反射      反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的...
  • hj7jay
  • hj7jay
  • 2016年05月23日 10:20
  • 1800

Java 9:装B之前你必须要会的——泛型,注解,反射

1 泛型1.1 基本概念泛型提供了编译期的类型检查,但问题远非这么简单///原生态类型 List list1 = new ArrayList(); ///规避的类型检查 List list1 = ...
  • cowthan
  • cowthan
  • 2016年12月11日 20:53
  • 1062

Java注解详解,自定义注解,利用反射解析注解

概要这篇文章将会带领你了解Java注解,注解的使用,注解的解析,利用反射解析运行时注解,相信有一定Java基础的小伙伴一定会接触大量的注解,Spring , Hibernate , MyBatis等著...
  • yangjizhao
  • yangjizhao
  • 2016年05月13日 23:04
  • 4675

Java中通过注解+反射拿到对象的属性和方法

1什么是反射? java通常是先有类再有对象,有对象我就可以调用方法或者属性。反射其实是通过Class对象来调用类里面的方法 下面就是测试代码,里面有详细的注释 package co...
  • ArryLuo123
  • ArryLuo123
  • 2017年02月16日 09:46
  • 1455
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中注解例子,使用反射做测试
举报原因:
原因补充:

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