获取注解里面的值,打印list中值,泛型的应用

2 篇文章 0 订阅
1 篇文章 0 订阅

带注解

public class EmergencyAreaMsgExport {

    @ColumnWidth(10)
    @ExcelProperty(value = "序号",index = 0)
    private Integer no;
}

打印方法:通过泛型list获取类属性方法返回值


    /**
     *     打印不同表格的方法
     *      list泛型
     * @param list
     * @param <E>
     */
    public static <E> Table getPdf(List<E> list)throws Exception{
        //类
        Class<?> className = list.get(0).getClass();
        //属性数量
        int t1 = className.getDeclaredFields().length;

        // 中文字体
        PdfFont sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
        // 构建表格以100%的宽度
        Table table = new Table(t1).setWidth(UnitValue.createPercentValue(100));
        //属性
        Field[] fields = className.getDeclaredFields();
        for (Field field : fields) {
            //属性注解
            ExcelProperty a = field.getAnnotation(ExcelProperty.class);
            //属性注解值
            String[] a1 = a.value();
            for (String s : a1) {
                table.addCell(new Cell().add(new Paragraph(s)).setFont(sysFont)
                        .setBackgroundColor(new DeviceRgb(221, 234, 238)));
            }
        }
        //遍历泛型的list
        for (E obj : list ){
            for (Field field : fields) {
                //属性描述器
                PropertyDescriptor pd = new PropertyDescriptor(field.getName(), className);
                Method getMethod = pd.getReadMethod();//获得get方法
                Object o = getMethod.invoke(obj);//执行get方法返内回容一个Object
                log.info("属性get值:"+o);
                table.addCell(new Cell().add(new Paragraph(o + "")).setFont(sysFont).setMaxWidth(50));
            }
        }

        return table;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值