首页 > 编程语言 >Java基础-注解

Java基础-注解

时间:2023-02-06 22:14:52浏览次数:44  
标签:toString Java MyMethodAnnotation 基础 public static 注解 method

常见注解分类

  • Java自带的标准注解
    • @Override:重写
    • @Deprecated:过时
    • @SuppressWarrnings:忽略警告
  • 元注解
    • @Retention:用于标明注解被保留的阶段
      • SOURCE:源文件保留
      • CLASS:编译器保留,默认值
      • RUNTIME:运行期间保留,可通过反射去获取注解信息
    • @Target:用于标明注解使用的范围
      • TYPE:类,接口,枚举类
      • FIELD:成员变量
      • METHOD:成员方法
      • PARAMTER:方法参数
      • CONSTRUCTOR:构造方法
      • LOCAL_VARIABLE:局部变量
      • ANNOTATION_TYPE:注解类
      • PACKAGE:包
      • TYPE_PARAMETER
      • TYPE_USE:任何地方
    • @Inherited:用于标明注解可继承
    • @Documented:用于标明是否生成javadoc文档
    • @Retention
  • 自定义注解

注意:注解不支持继承

例子

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyMethodAnnotation {
    String title() default "";
    String description() default "";
}
class TestAnnotation {
    @Override
    @MyMethodAnnotation(title = "toString method", description = "override toString method")
    public String toString() {
        return "Override toString method";
    }


    @Deprecated
    @MyMethodAnnotation(title = "old static method", description = "deprecated old static method")
    public static void oldMethod() {
        System.out.println("old method, don't use it.");
    }

    @SuppressWarnings({"unchecked", "deprecation"})
    @MyMethodAnnotation(title = "test method", description = "suppress warning method")
    public static void genericsTest() {
        List l = new ArrayList();
        l.add("abc");
        oldMethod();
    }
}
@Test
    public void testAnnotation() {
        try {
            Method[] methods = TestAnnotation.class.getClassLoader()
                    .loadClass("com.afabao.learn.sys.TestAnnotation")
                    .getMethods();

            for (Method method : methods) {
                // 方法上是否有MyMethodAnnotation注解
                if(method.isAnnotationPresent(MyMethodAnnotation.class)) {
                    for (Annotation declaredAnnotation : method.getDeclaredAnnotations()) {
                        System.out.println(method + ":" + declaredAnnotation);
                    }
                }
                MyMethodAnnotation annotation = method.getAnnotation(MyMethodAnnotation.class);
                System.out.println(annotation.title() + ":" + annotation.description());
            }
        } catch (Exception e) {

        }
    }
// 输出:
// public static void com.afabao.learn.sys.TestAnnotation.oldMethod():@java.lang.Deprecated()
// public static void com.afabao.learn.sys.TestAnnotation.oldMethod():@com.afabao.learn.sys.MyMethodAnnotation(title=old static method, description=deprecated old static method)
// old static method:deprecated old static method
// public static void com.afabao.learn.sys.TestAnnotation.genericsTest():@com.afabao.learn.sys.MyMethodAnnotation(title=test method, description=suppress warning method)
// test method:suppress warning method
// public java.lang.String com.afabao.learn.sys.TestAnnotation.toString():@com.afabao.learn.sys.MyMethodAnnotation(title=toString method, description=override toString method)
// toString method:override toString method

标签:toString,Java,MyMethodAnnotation,基础,public,static,注解,method
From: https://www.cnblogs.com/afabao/p/17096839.html

相关文章

  • 软件测试基础(三)
    一.软件测试方法测试活动从不同角度出发,可以有不同的分类;(1)黑盒测试和白盒测试,灰盒测试;(2)静态测试和动态测试;(3)人工测试和自动化测试。1.黑盒测试黑盒测试把被测对象......
  • Java类与对象
     一、类1、概念类:是数据和对数据进行处理的方法的集合体对象:类的实例,任何事物都可以是对象2、定义基本格式:[类修饰符]class<名称>{变量定义和方法定义}类的成......
  • springboot:java实现邮件及附件发送、HTML正文的三种方式(一)【附带源码】
    0.引言邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒、统计数据定期发送等需求。一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从......
  • springboot:java实现邮件及附件发送、HTML正文的三种方式(三)【附带源码】
    0.引言邮件发送是我们日常开发中比较常见的功能,常用于预警信息提醒、统计数据定期发送等需求。一般该方法会由前人封装好,实际开发时只需要调用即可,但具体怎么实现的,如何从......
  • 防火墙基础之思科实验安全防护
    防火墙基础之思科实验安全防护​原理概述:​防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝......
  • K8S下TiDB集群基础环境配置
    软件版本要求软件名称版本DockerDockerCE18.09.6Kubernetesv1.12.5+CentOSCentOS7.6,内核要求为3.10.0-957或之后版本Helmv3.0.0+防火墙配置建议关闭防火墙systemctlst......
  • javaScript - 预解析
    代码实例:console.log(data1)//undefinedvardata1=12;fn1();//executefunctionfn1functionfn1(){console.log("executefunctionfn1")}fn2();//fn2is......
  • javaScript - 函数,函数的定义与函数的特性,函数的内置对象
    1.函数的定义//方式1无参无返回值函数functionclose(){}//方式2有参有返回值函数functionset(id,name){returnid+name;}//方式3匿名函数varcallback=......
  • Java数组
    通常,数组是具有连续内存位置的类似类型的元素的集合。Java数组是一个包含类似数据类型的元素的对象。它是一个数据结构,我们存储类似的元素。只能在java数组中存储固定的......
  • Error:java: Compilation failed: internal java compiler error 解决办法
    错误现象使用Idea导入新项目或升级idea或新建项目时会出现以下异常信息:Error:java:Compilationfailed:internaljavacompilererror错误原因导致这个错误的原因主要......