Java注解annotation 异常: invalid typ

2022-07-20  本文已影响0人  雪飘千里

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

主要有如下几种:

@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注解实现异步上传

上一篇下一篇

猜你喜欢

热点阅读