一.五个预置注解
1.@Override
2.@SafeVarargs
3.@Functionallnterface
4.@Deprecated
//表明此方法已过时
@Deprecated //@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public String toString() {
return null;
}
@Deprecated //@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public String toString() {
return null;
}
5.
@SuppressWarnings
//抑制编译时的警告信息,加上参数才能使用:deprecation:使用了过时的类或方法的警告
// unchecked:执行了未检查的转换时的警告,如使用集合时未指定泛型
// fallthrough:当在switch语句使用时发生了case穿透
// path:在类路径,源文件路径等不存在路径的警告
// serial:当在可序列化的类上缺少serialVersionID定义时的警告
// finally:任何finally子句不能完成时的警告
// all:以上所有警告
// 类型 (域) 方法 参数 构造器 局部变量
// unchecked:执行了未检查的转换时的警告,如使用集合时未指定泛型
// fallthrough:当在switch语句使用时发生了case穿透
// path:在类路径,源文件路径等不存在路径的警告
// serial:当在可序列化的类上缺少serialVersionID定义时的警告
// finally:任何finally子句不能完成时的警告
// all:以上所有警告
// 类型 (域) 方法 参数 构造器 局部变量
@SuppressWarnings//@Target({TYPE,FIELD,METHOD, PARAMETER, CONSTRUCTOR,
LOCAL_VARIABLE})
(value={"all"})
int a; //此句没警告
int b;//此句有警告
int b;//此句有警告
二:自定义注解
/** 元注解:注解其他注解@Target,@Retention,@Documented,@Inherited */
@Target(value={ElementType.METHOD,ElementType.TYPE }) //描述注解使用范围,此处表明注解只能用在类型,方法前面
@Retention (RetentionPolicy.RUNTIME)//描述注解生命周期1.source:源文件中有效
// 2.class:在字节码文件中有效
// 3.runtime:在运行时有效
@Target(value={ElementType.METHOD,ElementType.TYPE }) //描述注解使用范围,此处表明注解只能用在类型,方法前面
@Retention (RetentionPolicy.RUNTIME)//描述注解生命周期1.source:源文件中有效
// 2.class:在字节码文件中有效
// 3.runtime:在运行时有效
自定义注解与ORM简例:
ORM(Object RelationShip Mapping)
类与表对应
属性与字段对应
对象与记录对应
FieldDemo 注解
@Target (ElementType.FIELD)
@Retention (RetentionPolicy.RUNTIME)
public @interface FieldDemo {
//类型 + 名称+ 括号
String columnName();//列名,对应记录
String type();//类型
int length();//长度
}
TableDemo注解
@Target (ElementType.TYPE)
@Retention (RetentionPolicy.RUNTIME)
public @interface TableDemo {
String value();//对类的注解,对应表名
}
@TableDemo(value = "tb_atudent")//这个类对应的表名为tb_atudent
public class Student {
public class Student {
@FieldDemo
(columnName = "id",type = "int",length = 10)
private int id; //这个属性对应的字段叫"id",类型type = "int",长度length =10
@FieldDemo (columnName = "studentName",type = "varChar",length = 10)
private String studentName;// 这个属性对应的字段叫"studentName",类型type = "varChar",长度length =10
@FieldDemo (columnName = "age",type = "int",length = 3)
private int age;
private int id; //这个属性对应的字段叫"id",类型type = "int",长度length =10
@FieldDemo (columnName = "studentName",type = "varChar",length = 10)
private String studentName;// 这个属性对应的字段叫"studentName",类型type = "varChar",长度length =10
@FieldDemo (columnName = "age",type = "int",length = 3)
private int age;
public Student(int age, int id, String studentName) {
super();
this.age = age;
this.id = id;
this.studentName = studentName;
}
super();
this.age = age;
this.id = id;
this.studentName = studentName;
}
public int getAge() {
return age;
}
return age;
}
public void setAge(int age) {
this.age = age;
}
this.age = age;
}
public int getId() {
return id;
}
return id;
}
public void setId(int id) {
this.id = id;
}
this.id = id;
}
public String getStudentName() {
return studentName;
}
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
this.studentName = studentName;
}
}