注解
功能一:提示信息 功能二:存储信息
注解需要定义注解类,类对象需要有落实的实体,注解可以出现在类Class上,方法Method上,成员变量Field上以及构造方法Constructor上,注解对象需要被添加注解的实体所对应的反射对象进行获取,人话:要获得注解信息,首先要获得修饰的东西的反射对象!!!!!!
元注解(用来注解注解的注解)(?什么玩意。。。抽象的很)
内置注解
@Overeide方法重写注解,如果添加了该注解的方法,并没有重写父类的方法,编译无法通过@Deprecated方法弃用注解,如果添加了该注解的方法,该方法在后续版本迭代时,有可能会被淘汰@SuppressWarnings(all)抑制警告注解,如果代码出现了警告,可以使用该注解,抑制警告的产生@FunctionalInterfaxe函数式接口,如果一个接口只有一个抽象方法,则这个接口就叫做函数式接口
自定义注解
// 该元注解的作用是用来定义该注解的生命周期
@Retention(RetentionPolicy.RUNTIME)
// 定义注解可以在哪里进行使用
@Target({ElementType.TYPE,ElementType.METHOD})
// 表示该注解可以被子类继承
@Inherited
// 表示该注解支持生成 JavaDoc 文档
@Documented
// @Repeatable() JDK1.8新增元注解 表示该注解可以在同一位置多次使用
public @interface DB {
// 注解中特有的属性,用来定义注解可以存储的属性
// 需要通过元注解来定义该注解的性质
String driverClassName();
String url();
String username();
String password();
}
// 自定义注解的使用
@DB(driverClassName = "com.mysql.cj.jdbc.Driver",url = "jdbc:mysql://localhost:3306/iweb?characterEncoding =utf8",username = "root",password = "123456")
public class DBUtil {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
// 从注解中提取属性值,从而获取JDBC连接
DB db = DBUtil.class.getAnnotation(DB.class);
String driverClassName = db.driverClassName();
String url = db.url();
String username = db.username();
String password = db.password();
Class.forName(driverClassName);
Connection c = DriverManager.getConnection(url,username,password);
return c;
}
}