首页 > 编程语言 >java 反射:类和属性是否有注解

java 反射:类和属性是否有注解

时间:2023-05-24 17:11:06浏览次数:32  
标签:反射 java 元素 annotation schools 注解 MyAnnotation out

  • boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
    元素上是否包含指定类型的注解,存在则返回 true,否则返回 false
  • <A extends Annotation> A getAnnotation(Class<A> annotationClass)
    获取元素上指定的注解,如果元素没有该注解返回 null
  • <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)
    获取元素上指定的注解,如果元素没有该注解返回 null,只看元素本身,继承来的不算
  • Annotation[] getAnnotations()
    获取元素上的所有注解

自定义注解

@Target(value = {ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface MyAnnotation {
    String name() default "";
    int age() default 0;
    int id() default -1;
    String[] schools();
}

自己的类上使用注解

@MyAnnotation(name = "张三", age = 18, schools = {"博雅学校", "南充市第十一中学", "清华大学"})
public class Student {
}

反射获取注解

Class<Student> clazz = Student.class;

// 如果有 MyAnnotation 注解(可能是继承来的)
if (clazz.isAnnotationPresent(MyAnnotation.class)){
    // 如果是自己的注解
    MyAnnotation annotation = clazz.getDeclaredAnnotation(MyAnnotation.class);
    if (annotation != null){
        // 打印注解各项值
        System.out.println("id:" + annotation.id());
        System.out.println("name:" + annotation.name());
        System.out.println("age:" + annotation.age());
        System.out.println("schools:" + String.join(", ", annotation.schools()));
    }
}

标签:反射,java,元素,annotation,schools,注解,MyAnnotation,out
From: https://www.cnblogs.com/hangychn/p/17151538.html

相关文章

  • java 各种锁
    乐观锁悲观锁这不是一种具体的锁,是一个广义的概念,可以认为所有的锁都是悲观或乐观的,java中绝大部分锁都是悲观锁(synchronized、ReentrantLock等);也有乐观锁(原子类的递增、读写锁的读锁),java的乐观锁都是cas实现的乐观锁顾名思义,老是假设自己在操作数据的同时一定会有别的数......
  • Java大文件分片上传/多线程上传
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1.通过form表单向后端发送请求         <formid="postForm"action="${pageContext.request.contextPath}/UploadServlet"method="post"e......
  • python hmac_sha256 转为 java
    Javahmacsha256packagecom.example;importjava.security.InvalidKeyException;importjava.security.NoSuchAlgorithmException;importjavax.crypto.Mac;importjavax.crypto.spec.SecretKeySpec;importjavax.xml.bind.DatatypeConverter;publicclassMain......
  • java 多线程:synchronized 详解
    总结一个锁对象只能同时被一个线程持有,分为对象锁和类锁对象锁:每个对象都可以作为锁(几个不同的对象就是几个锁)类锁:字节码对象也能作为锁(全局唯一)同步方法不能自定义锁,只能是默认的锁(非静态:this,静态:class);同步代码块默认的锁和方法一样(非静态:this,静态:class,普通方法里面可以......
  • Java开启异步的两种方式
    二、Java开启异步的两种方式1、注解开启:@Async1.1、配置异步的线程池必须配置异步线程池,否则异步不会生效。@EnableAsync注解:指定异步线程池。不指定默认使用:SimpleAsyncTaskExecutor线程池SimpleAsyncTaskExecutor是一个最简单的线程池,它没有任何的线程相关参数配置,它会为......
  • 用命令行工具运行java文件
     1、若java文件有packagepackagequitStu;publicclassMain{publicstaticvoidmain(String[]args){for(Stringstr:args){if(str.equals("11")){System.out.println("-v1.0");brea......
  • Java如何生成随机数?要不要了解一下!
    前言我们在学习Java基础时就知道可以生成随机数,可以为我们枯燥的学习增加那么一丢丢的乐趣。本文就来介绍Java随机数。一、Random类介绍在Java中使用Random工具类来生成随机数,该类在java.util包下,在JDK1.0版本就存在了。Random单词本身就是随机、随意、任意的意思......
  • Java配置线程池
    一、Java配置线程池1、线程池分类、其他1.1、分类IO密集型和CPU密集型任务的特点不同,因此针对不同类型的任务,选择不同类型的线程池可以获得更好的性能表现。1.1.IO密集型任务​ IO密集型任务的特点是需要频繁读写磁盘、网络或者其他IO资源,执行时间长,CPU占用率较低。对......
  • 流程表单JavaScript代码
    ----订单流程-----------//表单加载初始化时functionpreinit(){}//表单加载完成,isrun代表流程是否流转中1-是,0-否functionLoaded(isrun){$("#om_order_status").attr("disabled","disabled");......
  • java入门2..0
    java的运行原理1.在本地磁盘中创建一个文本文件为Demo.java的源文件2.在源文件中编写java代码如下:publicclassDemopublicstaticvoid,main(String[]args){System.out.println(" ");}3.在当前文件目录下。输入cmd跳转到dos窗口4.通过java编译源文件。会生成字节码文件......