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

Java自定义注解Annotation

2016-07-04 15:40 417 查看
  Java中的注解主要用于标识在类,方法,属性,自动上,有很多用途,比如我们常见的@Override,自定义注解都继承java.lang.annotation.Annotation接口,使用@interface声明。注解中的参数有基本类型int,float,boolean,byte,double,char,long,short,Class类型,String类型,枚举类型,Annotation类型,以及以上所有类型的数组。下面我们创建一个注解类型

package jdbcDemo;

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;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE,ElementType.FIELD})
@Documented
public @interface FiledOrder {

//顺序,默认值为0
public int seq() default 0;

//备注
String remark();
}
</pre><pre class="java" name="code" snippet_file_name="blog_20160704_3_4371796" code_snippet_id="1743909">package jdbcDemo;

public class Person {

@FiledOrder(seq=2,remark="名称")
private String name;

@FiledOrder(seq=1,remark="顺序")
private int age;

public String getName() {
return name;
}

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

}

package jdbcDemo;

import java.lang.reflect.Field;

public class firstAnnotationDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub
Class c=Person.class;//获取类实例
System.out.println("获取类实例");

Field[] fs=c.getDeclaredFields();  //获取所有字段
System.out.println(fs.length);
for(Field f:fs)
{
System.out.println(f.getName());
//判断是否有注解
if(f.isAnnotationPresent(FiledOrder.class))
{
FiledOrder fo=f.getAnnotation(FiledOrder.class);
System.out.println("顺序"+fo.seq()+"--备注"+fo.remark());
}

}
}

}


自定义注解中如果只有一个字段,要定义名称为value(); 字段的权限修饰要用public或默认值


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java注解 annotation