文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

详解Java进阶知识注解

2024-04-02 19:55

关注

一、注解的概念

1、注解官方解释

注解

叫元数据,一种代码级别的说明,它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举在同一个层次,它可以声明在包、类、字段、局部变量、方法参数等的前面,用来对这些元素进行说明、注释。

注解的作用分类

注解按照运行机制分类

2、注解与注释的区别

(1)注解:用于描述代码,说明程序,主要目的是为了给计算机看,且能够影响程序的运行。

(2)注释:用于描述代码的作用和一些关键性的知识点,使用文字描述程序,是为了给程序员观看,以此来使程序员能够以最快的时间了解被注释的代码。


二、内置注解与元注解

1、常用的内置注解

2、常用的元注解

元注解:用于描述注解的注解,在创建注解时使用

1. @Target属性值:

2.@Retention属性值:

3.@Documented:该注解的作用就是表示此注解标记的注解可以包含到javadoc文件中去
4.@Inherited:描述注解是否能够被子类所继承

三、自定义注解

1、自定义注解基础知识

1.格式:


@Inherited//元注解public @interface zhujie{}

2.注解本质:注解的本质上就是一个接口,该接口默认继承Annotation


public interface MyAnno extends java.lang.annotation.Annotion

3.属性:接口中可以定义的内容(成员方法、抽象方法)

属性的返回值:

属性赋值注意事项


2、演示自定义注解的使用

自定义注解annotation


@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.TYPE)
public @interface annotation {
    String name() default "木鱼";
    int age();
    int[] score();
}

使用以上注解的类TestAnnotation


//name具有默认值,不需要必须为name赋值,但也可以重新赋值
@annotation(age=20,score={99,100,100})
public class TestAnnotation {

    public static void main(String[] args) throws ClassNotFoundException {
        Class clazz = Class.forName("test.TestAnnotation");
        annotation annotation = (annotation) clazz.getAnnotation(annotation.class);
        System.out.println("姓名:"+annotation.name()+"  年龄:"+annotation.age());
        System.out.print("成绩为:");
        int[] score=annotation.score();
        for (int score1:score){
            System.out.print(score1+" ");
        }
    }

}

运行结果

3、演示注解在程序中的作用

两个方法:

1.创建自定义注解


@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.FIELD)
public @interface StringNull {

}

2.创建实体类


public class Student {
    @StringNull
    public String name=null;

    @StringNull
    public String xuehao=null;

    @StringNull
    public String sex=null;

    public void setName(String name) {
        this.name = name;
    }

    public void setXuehao(String xuehao) {
        this.xuehao = xuehao;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

3.创建测试类,测试注解


public class TestAnnotation {

    public static void main(String[] args) throws Exception{
        Class clazz = Class.forName("test.Student");
        Student student =(Student) clazz.newInstance();
        student.setName("小明");
        Field[] fields= clazz.getFields();
        for(Field f:fields){
            if(f.isAnnotationPresent(StringNull.class)){
                if(f.get(student)==null){
                    System.out.println(f.getName()+":是空的字符串属性");
                }else{
                    System.out.println(f.getName()+":"+f.get(student));
                }
            }
        }
    }
}

4.运行结果

以上就是详解Java进阶知识注解的详细内容,更多关于Java注解的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯