自己定义java注解
来源:互联网 发布:中华老黄历软件 编辑:程序博客网 时间:2024/05/20 05:57
先定义类,字段,方法上的注解 然后在通过反射解析这些注解
1:自定义类注解
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;
@Target(ElementType.TYPE)//告诉我们定义的注记用来修饰什么
@Retention(RetentionPolicy.RUNTIME)//你这个注记什么时候起作用
@Documented
public @interface DesClass {
String description();
String tableName();
}
2:自定义字段注解
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(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DesField {
String desField();
String fieldname();
}
3:自定义方法注解
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DesMethod {
String desmethod();
}
使用注解:
@DesClass(description="实体类Student对应数据库中表sys_student",tableName="sys_student")
public class Student {
@Id(keyname="s_id",keytype = "auto")
@DesField(desField="类的成员ID",fieldname="s_id")
private int id;
@DesField(desField="类的成员姓名",fieldname="s_name")
private String name;
@DesField(desField="类的成员年龄",fieldname="s_age")
private int age;
public int getId() {
return id;
}
@DesMethod(desmethod="设置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;
}
}
解析注解:
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class DesStudentTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Class c = Student.class;
//判断Student字节码对象是否有DesClass注记
boolean flag = c.isAnnotationPresent(DesClass.class);
if(flag){
//取出Student类的DesClass注记对象
DesClass des = (DesClass)c.getAnnotation(DesClass.class);
System.out.println(des.description());
System.out.println(des.tableName());
}
Field[] fs = c.getDeclaredFields();
for (Field field : fs) {
if(field.isAnnotationPresent(Id.class)){
Id id = (Id)field.getAnnotation(Id.class);
System.out.println("字段名是:"+id.keyname()+"主键生成方式是:" + id.keytype());
}
if(field.isAnnotationPresent(DesField.class)){
DesField df = (DesField)field.getAnnotation(DesField.class);
System.out.println(df.fieldname());
}
}
Method[] m = c.getMethods();
for (Method method : m) {
if(method.isAnnotationPresent(DesMethod.class)){
DesMethod dm = (DesMethod)method.getAnnotation(DesMethod.class);
System.out.println(dm.desmethod());
}
}
}
}
- 自己定义java注解
- Java 注解的定义
- JAVA自定义注解的使用和定义
- java注解定义和使用详解
- java注解学习2,注解的定义与反射调用
- java注解之注解的使用和定义
- java中注解的定义和注解的获取
- 定义注解
- Java注解的学习---深入理解Java注解、自己写一个Java注解
- Java如何定义自己的exception
- eclipse java 使用自己定义的包
- java如何定义自己的类
- java反射--注解的定义与运用以及权限拦截
- java反射--注解的定义与运用以及权限拦截
- Java注解类的定义/使用和反射
- java中Annotation注解的定义与使用
- java再复习——注解的定义与使用
- java利用@interface定义元注解及使用实例
- WMI问题全解(Windows管理规范)
- Oracle中TO_DATE格式
- 去360还是留百度(转载)
- 老罗android视频学习笔记1
- AndroidManifest.xml文件详解(activity-alias)
- 自己定义java注解
- 一篇关于职业选择的好文章(转载)
- Web容器配置文件web.xml解析
- Y combinator的简单理解
- 期待已久的改变图片透明度专业版发布了
- #if,#ifdef,#if defined
- 南阳农运会于2012年9月16日开幕
- 树结构表查询
- 预处理