其实平时的Java代码里 很少会使用到注解 但企业级的开发就不一样
注解如同一个标签
注解 annotation其实与class 和 interface一样,注解也属于一种类型。它是在JavaSE 5.0中开始引入的概念
注解的定义
注解通过@interface关键字进行定义
public @interface TestAnnotation{
}
形式和接口一样
注解的应用
创建一个类 然后 在类定义上方加上@TestAnnotation 就可以用了。
@TestAnnotation
public class Test{
}
元注解
元注解是注解的注解,可以作用到注解上,或者说是基本注解
@Rentention
@Rentention(RententionPolicy.RUNTIME)
public @interface TestAnnotation{
}
所以 注解后到括号内 可以选择注解类型 向注解传参
@Documented
这个元注解肯定和文档有关系。它的作用是能够将注解中的元素包含到javadoc中去
@Target
制定作用域
@Inherited
Inherited 是继承的意思,但是它并不是说注解本身可以继承,而是说如果一个超类被 @Inherited 注解过的注解进行注解的话,那么如果它的子类没有被任何注解应用的话,那么这个子类就继承了超类的注解。
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@interface Test {}
@Test
public class A {}
public class B extends A {}
@Repeatable
@interface Persons {
Person[] value();
}
@Repeatable(Persons.class)
Persons 是一张总标签,可以说是存放注解的注解,注解里有属性,注解的值可以有多个
注解的属性
注解的属性也叫做成员变量。注解只有成员变量,没有方法。注解的成员变量在注解的定义中以“无形参的方法”形式来声明,其方法名定义了该成员变量的名字,其返回值定义了该成员变量的类型。
@Target(ElementType.TYPE)
@Rentention(RententionPolicy.RUNTIME)
public @interface TestAnnotation{
int id();
String msg();
}
没有形参,直接调用id,msg进行赋值
赋值的方式,是以注解括号的形式
@TestAnnotation(id = 3, msg = "hello annotation")
public class Test{
}
另外如果注解中只有一个叫value的属性的话,应用这个注解时可以直接接属性值填写到括号内
public @interface Check{
String value();
}
这样运用即可 默认属性名为value
@Check('hi')
int a;
Java内置注解
@Deprecated过时的 方法,类,成员变量都可以
@Override 提示子类要复写父类中被@Override修饰的方法
@SuppressWarnings阻止警告的意思
如果注解难于理解,你就把它类同于标签,标签为了解释事物,注解为了解释代码。
- 注解的基本语法,创建如同接口,但是多了个 @ 符号。
- 注解的元注解。
- 注解的属性。
- 注解主要给编译器及工具类型的软件用的
- 注解的提取需要借助于Java的反射技术,反射比较慢,所以注解使用时也需要谨慎计较时间成本
我觉得我还需要另外了解一下 Spring 里 Hibernate 和 Mybatis 以及 bean格式工厂的部分
再熟悉一下 然后就可以下手开发了