【java】java高级部分——注解

java注解Annotation

java中的注解在开发系统中很常用,而且作为初学者,我们都会用到注解只不过有时候是用的jdk提供的内置注解,所以初学者都不会注意这一个用法。

1.jdk提供的内置注解

  • @Override 诸位在继承某父类,重写方法时候这个用到最多。我们在重写父类的toString()方法,自动 生产都会带着个注解。
  • @Deprecated。这是一个表示这个方法已经过期。我们打开jdk源码有时候可以看到这个注解。
  • @SuppressWarnings 这个注解是忽略警告信息。在用Spring的时候也是很常见的。
  • @SuppressWarnings 有常见的值,分别对应如下意思

1.deprecation:使用了不赞成使用的类或方法时的警告(使用@Deprecated使得编译器产生的警告);
2.unchecked:执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics) 来指定集合保存的类型; 关闭编译器警告
3.fallthrough:当 Switch 程序块直接通往下一种情况而没有 Break 时的警告;
4.path:在类路径、源文件路径等中有不存在的路径时的警告;
5.serial:当在可序列化的类上缺少 serialVersionUID 定义时的警告;
6.finally:任何 finally 子句不能正常完成时的警告;
7.rawtypes 泛型类型未指明
8.unused 引用定义了,但是没有被使用
9.all:关于以上所有情况的警告。

  • @SafeVarargs jdk1.7提供,主要使用在参数是变参且 是参数类型是泛型。
  • @FunctionalInterface: @FunctionalInterface这是Java1.8 新增的注解,用于约定函数式接口。
    函数式接口概念: 如果接口中只有一个抽象方法(可以包含多个默认方法或多个static方法),该接口称为函数式接口。函数式接口其存在的意义,主要是配合Lambda 表达式这个Lambda表达式虽然学了,但是没有在工程项目中使用,填把坑挖下 来使用。Note:当接口有两个方法时候,就不能用这个注解了。

2.自定义注解

  1. 创建注解类型的时候用==@inteface==。而且在Idea中创建文件时,如果创建的是注解则文件时绿色的@表示
  2. 元注解

@Target({METHOD,TYPE}) 表示这个注解可以用用在类/接口上,还可以用在方法上
@Retention(RetentionPolicy.RUNTIME) 表示这是一个运行时注解,即运行起来之后,才获取注解中的相关信息,而不像基本注解如@Override 那种不用运行,在编译时eclipse就可以进行相关工作的编译时注解。
@Inherited 表示这个注解可以被子类继承
@Documented 表示当执行javadoc的时候,本注解会生成相关文档

3. 实际应用

在具体开发环节中,我是这样使用的,通过注解定义表对应的实体类名,还有通过注解定义对应的字段名称和数据库表对应的属性名成。

使用注解定义表的名称。

package com.yzz.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Table {
    /** * 用于修饰实体类,表示实体类名与数据库表名之间的映射 * @return */
    String name() default "";
}

定义方法的注解

package com.yzz.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface MethodName {
    String method() default  "";
}

javabean的定义

@Table(name="tb_auto")
public class Auto implements Serializable {

    @Column(name="aliencenum",type=String.class,isPrimary = true)
    private String  aliencenum; //车牌号

    @Column(name="cid",type=String.class)
    private String cid;

    @Column(name="atime",type=Date.class)
    private Date atime;

参考文献
how2j关于注解

你可能感兴趣的:(java)