注解_Annotation_内置注解_自定义注解_反射机制读取注解JAVA208-210
2016-03-27 11:26
746 查看
来源:http://www.bjsxt.com/
一、S02E208_01注解_Annotation、内置注解
什么是注解
内置注解
二、S02E209_01自定义注解
元注解
三、S02E210_01反射机制读取注解
注解作业
控制台输出
一、S02E208_01注解_Annotation、内置注解
什么是注解
内置注解
二、S02E209_01自定义注解
元注解
package com.test.annotation; @MyAnnotation01 public class Demo01 { @MyAnnotation01(age=19,studentName="test",id=1001, schools={"北大","浙大"}) public static void main(String[] args) { } @MyAnnotation02(value="aaa")//或者("aaa") public void test(){ } }
package com.test.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(value={ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation01 { String studentName() default ""; int age() default 0; int id() default -1; String[] schools() default{"清华","复旦"}; }
package com.test.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(value={ElementType.METHOD,ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation02 { String value(); }
三、S02E210_01反射机制读取注解
注解作业
package com.test.annotation2; import java.lang.annotation.Annotation; import java.lang.reflect.Field; /** * 使用反射读取注解的信息,模拟处理注解信息的流程 */ public class Demo { public static void main(String[] args) { try { Class clazz = Class.forName("com.test.annotation2.SxtStudent"); //获取类的所有有效注解 Annotation[] annotations = clazz.getAnnotations(); for (Annotation a : annotations) { System.out.println(a); } //获取类的指定的注解 SxtTable st = (SxtTable) clazz.getAnnotation(SxtTable.class); System.out.println(st.value()); //获取类的属性的注解 Field f = clazz.getDeclaredField("sname"); SxtField sxtField = f.getAnnotation(SxtField.class); System.out.println(sxtField.columnName()+"--"+sxtField.type()+"--"+sxtField.length()); //根据获取的表名和字段的信息,拼出DDL语句,然后,使用JDBC执行这个SQL,在数据库中生成相关的表 } catch (Exception e) { e.printStackTrace(); } } }
package com.test.annotation2; @SxtTable("tb_student") public class SxtStudent { @SxtField(columnName="id",type="int",length=10) private int id; @SxtField(columnName="sname",type="varchar",length=10) private String sname; @SxtField(columnName="age",type="int",length=3) private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getStudentName() { return sname; } public void setStudentName(String studentName) { this.sname = studentName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package com.test.annotation2; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(value={ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) public @interface SxtTable { String value(); }
package com.test.annotation2; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target(value={ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface SxtField { String columnName(); String type(); int length(); }
控制台输出
@com.test.annotation2.SxtTable(value=tb_student) tb_student sname--varchar--10
相关文章推荐
- Spring中的一个错误:使用Resources时报错(The annotation @Resources is disallowed for this location)
- 用Java写解谜Rpg-1.我理解的MVC与课设
- Java的进程与线程
- 迭代器模式和java集合Collection(一)ArrayList
- Java学习笔记之使用反射+泛型构建通用DAO
- java的回收机制----根搜索算法
- 常用排序算法
- 在Eclipse中使用git把项目导入到osc@git中
- java学习之实验二
- 详解Java实现多线程的三种方式
- java中的反射
- 【JAVA设计模式】简单工厂模式(Simple Factory Pattern)
- JavaEE初学者
- java中HashMap详解
- welogic不能启动主服务器,出现 java.lang.NumberFormatException: null错误
- Maven生成可以直接运行的jar包的三种方式
- MyEclipse------遍历某个路径下的(所有或特定)文件和目录
- MyEclipse------File类的各种方法
- MyEclipse------如何在特定目录下创建文件夹
- java基础-002