美文网首页
Java注解annotation 异常: invalid typ

Java注解annotation 异常: invalid typ

作者: 雪飘千里 | 来源:发表于2022-07-20 14:00 被阅读0次

    我们经常会自定义注解,自定义注解时,可能会需要定义各种数据类型,但是自定义注解可以包含哪些数据类型,是存在限制的。

    主要有如下几种:

      1. A primitive type : 基本类型(java的八种基本类型:byte、short、int、long、float、double、char、boolean)
      1. String : 字符串
      1. Class :Class
      1. An enum type : 枚举
      1. An annotation type :注解
      1. An array type :类型为以上任一类型的数组
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD})
    public @interface Demo {
        //1. 基本类型(java的八种基本类型:byte、short、int、long、float、double、char、boolean)
        int aaa();
        //2. String : 字符串
        String str();
        //3. Class :Class
        Class  clazz();
        //4. 枚举
        GoodsStateEnum   goodsStateEnum();
        //5. 注解
        Export export();
        //6. 类型为以上任一类型的数组
        Class[] stringArray();
        
    }
    
    

    如果需要用到其他类型咋办,比如我们需要用到一个自定义的实体类,其实简单,可以用Class 定义,然后利用反射(.newInstance())来创建对象。

    比如下面这样,

    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 Upload {
    
        //业务模块名称
        String moduleName() default "";
        //文件过期时间
        int expireTime() default 24;
        //文件名称
        String fileName() default "";
          //excel解析类
        Class     clazz();
        //excel 监听器
        Class listener();
    }
    
    @Upload(moduleName="aaa",expireTime=3,clazz = MallOrderExcelVO.class,listener = MallOrderExcelListener.class)
    
    List list= EasyExcel.read(new FileInputStream(new File(filePath)),annotation.clazz(),(AnalysisEventListener)annotation.listener().newInstance()).sheet().doReadSync();
    

    完整代码见 Java注解实现异步上传

    相关文章

      网友评论

          本文标题:Java注解annotation 异常: invalid typ

          本文链接:https://www.haomeiwen.com/subject/noqdirtx.html