杂乱代码

杂乱代码,常用:

1.获取当前实现类的泛型类

Type[] types = this.getClass().getInterfaces()[0].getGenericInterfaces();
  for(Type type1 : types){
      if(type1.getTypeName().indexOf(GeneralVouchersManager.class.getName()) != -1){
          Class<?> clazz = (Class<?>)((ParameterizedType) type1).getActualTypeArguments()[0];
      }
}

2.断言
举例 比如在接口中:

default boolean havePreVouchers(T query) throws Exception{
        return getCompareResult(query,(a,b) -> a > b);
    }
default boolean haveNextVouchers(T query) throws Exception{
        return getCompareResult(query,(a,b) -> a < b);
    }

区别只是判断方式不同 所以提取出来公共部分 判断方式以断言形式传入

default boolean getCompareResult(T query,BiPredicate<Integer,Integer> biPredicate) throws Exception {
        T result = this.getGeneralVouchersBO(query);
        if(result == null){
            return false;
        }
        Field[] fields = result.getClass().getDeclaredFields();
        for(Field f : fields){
            Type genericType = f.getGenericType();
            if (List.class.isAssignableFrom(f.getType()) && genericType instanceof ParameterizedType) {
                ParameterizedType pt = (ParameterizedType) genericType;
                Class<?> accountPrincipalApproveClazz = (Class<?>) pt.getActualTypeArguments()[0];
                if(AbstractVouchersBO.class.isAssignableFrom(accountPrincipalApproveClazz)){
                    PropertyDescriptor pde = new PropertyDescriptor(f.getName(), result.getClass());
                    Method rme = pde.getReadMethod();
                    List<?> list = (List<?>) rme.invoke(result);
                    if(ListUtils.isNotEmpty(list)){
                        String prefix = classMap.get(accountPrincipalApproveClazz.getSimpleName());
                        if(biPredicate.test(StringUtils.getCharacterTimes(this.getPrefix(),DELIMITER),StringUtils.getCharacterTimes(prefix,DELIMITER))){
                            return true;
                        }
                    }
                }
            }
        }
        return false;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值