千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

首页 视频教程 培训课程 师资团队 技术干货 常见问题 面试题 职场就业 零基础学Java 行业资讯
【热点话题】 Java技术干货 Java学习教程 Java学习笔记 Java面试题 Java培训问答 Java培训机构哪些好 Java职场就业
当前位置:Java培训  >  java技术干货  >  什么是注解?在面试的时候该怎么答

什么是注解?在面试的时候该怎么答

来源:千锋教育
发布人:qyf
时间: 2022-06-08 10:43:00 1654656180

java培训

  注解是通过@interface关键字来进行定义的,形式和接口差不多,只是前面多了一个@

  public @interface TestAnnotation {

  }

  使用时@TestAnnotation来引用,要使注解能正常工作,还需要使用元注解,它是可以注解到注解上的注解。元标签有

  @Retention @Documented @Target @Inherited @Repeatable五种

  @Retention说明注解的存活时间,取值有RetentionPolicy.SOURCE 注解只在源码阶段保留,在编译器进行编译时被丢弃;RetentionPolicy.CLASS 注解只保留到编译进行的时候,并不会被加载到JVM中。RetentionPolicy.RUNTIME可以留到程序运行的时候,它会被加载进入到JVM中,所以在程序运行时可以获取到它们。

  @Documented 注解中的元素包含到javadoc中去

  @Target 限定注解的应用场景,ElementType.FIELD给属性进行注解;ElementType.LOCAL_VARIABLE可以给局部变量进行注解;ElementType.METHOD可以给方法进行注解;ElementType.PACKAGE可以给一个包进行注解 ElementType.TYPE可以给一个类型进行注解,如类、接口、枚举

  @Inherited 若一个超类被@Inherited注解过的注解进行注解,它的子类没有被任何注解应用的话,该子类就可继承超类的注解;

  注解的作用:

  1)提供信息给编译器:编译器可利用注解来探测错误和警告信息

  2)编译阶段:软件工具可以利用注解信息来生成代码、html文档或做其它相应处理;

  3)运行阶段:程序运行时可利用注解提取代码

  注解是通过反射获取的,可以通过Class对象的isAnnotationPresent()方法判断它是否应用了某个注解,再通过getAnnotation()方法获取Annotation对象。

package com.zt.annotation;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

public @interface Table {

    String value();

}

package com.zt.annotation;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface TableId {

    String value();

    String type() default "varchar2";

    int length() default 50;

    String seqName();

}

package com.zt.annotation;

import java.lang.annotation.ElementType;

import java.lang.annotation.Retention;

import java.lang.annotation.RetentionPolicy;

import java.lang.annotation.Target;

@Target(ElementType.FIELD)

@Retention(RetentionPolicy.RUNTIME)

public @interface TableColunm {

    String value();

    String type() default "varchar2";

    int length() default 50;

}

package com.zt.annotation;

/**

 * Copyright (C),2015-2021,北京千锋教育

 * FileName: Role

 * Author: skyhappy

 * Date:2021/8/19 12:17

 */

@Table("t_roles")

public class Role {

    @TableId(value = "roleId",seqName = "seq_role")

    private int id;

    @TableColunm("name")

    private String name;

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

}

  更多关于“java培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

最新文章NEW

相关推荐HOT

更多>>