remove @Override annotation

       我们在将一个类拷到另一个项目的时候,常常会出现这样的提示remove @Override annotation




      按照提示去除的话也没有什么影响,但是为什么要这样做呢?真是细思极恐呢~~~

      这其实是JDK编译的问题~

      右键项目---properties---Java Compiler比较下源项目跟目的项目,就可以发现其中的端倪。

           

              



      是的,真相就这样浮出了水面,这是JDK版本的问题。@Override在JDK1.5里是不能编译通过的,具体原因好像是有个小小的bug,不支持对接口的实现(是什么原因我也不是很关心~~~),但是JDK1.6就修正了这个bug,无论是对父类的方法覆盖还是对接口的实现都可以加上@Override。

      如何解决这个问题呢?那就将JDK版本改成1.5以上就好啦。

          

      在这里将JDK版本调高点~

            

       然后就可以回到这里选1.6了,Apply一下

              

      By the way,eclipse的JDK版本设置在哪里呢?Window---Preferences---Java---Compiler可以看到,这里我用的是1.8,听说应该一致呢,但是我由于个人体质原因还是坚持不设置成一致呢!

           




  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在这段代码中,headClazz传入空值会导致NullPointerException异常。如果要获取entity包中的user、admin表的实体类,可以使用反射机制获取这些类。具体来说,可以使用Class.forName()方法获取类对象,然后将它们作为参数传递给CommonReadListener构造函数。修改后的代码如下: ``` private Class<?> headClazz; private List<Class<?>> entityClasses; /** * @param headClazz excel model 类对象 * @param entityClasses 实体类列表 */ public CommonReadListener(Class<?> headClazz, List<Class<?>> entityClasses) { this.headClazz = headClazz; this.entityClasses = entityClasses; } @Override public void invokeHead(Map<Integer, ReadCellData<?>> headMap, AnalysisContext context) { ExcelPropertyCheck clazzHeadAnno = this.headClazz.getAnnotation(ExcelPropertyCheck.class); Field[] declaredFields = headClazz.getDeclaredFields(); if (clazzHeadAnno != null && clazzHeadAnno.required()) { for (Field declaredField : declaredFields) { nullAbleFieldMap.put(declaredField.getName(), true); } } for (Field declaredField : declaredFields) { ExcelPropertyCheck annotation = declaredField.getAnnotation(ExcelPropertyCheck.class); if (annotation != null) { if (annotation.checkFormat()) { checkFormatFieldMap.put(declaredField.getName(), annotation.type() + ""); } if (annotation.required()) { nullAbleFieldMap.put(declaredField.getName(), true); } else { nullAbleFieldMap.remove(declaredField.getName()); } if (annotation.required() && annotation.length() != -1) { checkLengthFieldMap.put(declaredField.getName(), annotation.length()); } } } // 获取实体类 for (Class<?> clazz : entityClasses) { if (clazz.getSimpleName().equals("User") || clazz.getSimpleName().equals("Admin")) { // 处理实体类 } } } ``` 在上述代码中,我们新增了一个entityClasses参数,用来传递实体类列表。在invokeHead()方法中,我们使用反射机制获取headClazz类对象中的属性和注解,并且使用entityClasses参数获取User和Admin实体类。你可以将User和Admin实体类的处理代码放到if语句块中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值