JavaSpring Boot及开发相关基础自学Java入门与进阶

Java 注解

2018-10-17  本文已影响174人  浩宇Harry

其实平时的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阻止警告的意思

如果注解难于理解,你就把它类同于标签,标签为了解释事物,注解为了解释代码。

我觉得我还需要另外了解一下 Spring 里 Hibernate 和 Mybatis 以及 bean格式工厂的部分

再熟悉一下 然后就可以下手开发了

上一篇下一篇

猜你喜欢

热点阅读