Comparable泛型踩坑
发表于|更新于
|浏览量:
善疑人者,人亦疑之;善防人者,人亦防之。——刘基
之前写的Comparable解决泛型限定问题
遇到了这种情况:

这是因为LocalDate没有实现Comparable<LocalDate>
而是由其实现的接口ChronoLocalDate去继承的Comparable<ChronoLocalDate>
并且LocalDate去实现的Serializable,而不是ChronoLocalDate

我们这里直接用的T extends Comparable<T>,此处传了LocalDate就是extends Comparable<LocalDate>
和实现Serializable的不是同一层级,所以我们需要指定为Comparable<? super T>,这个意思就是说允许Comparable里的类型是它的父类或者接口,具体super和extends区别可以看泛型的super和extends

改成Comparable<? super T>后,编译通过
相关推荐
2024-03-01
xcode报错SDK does not contain 'libarclite' at the path
希望是附丽于存在的,有存在,便有希望,有希望,便是光明。 —— 鲁迅 今天报错: 123SDK does not contain 'libarclite' at the path '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a'; try increasing the minimum deployment target 解决方式,下载: https://github.com/kamyarelyasi/Libarclite-Files/blob/main/libarclite_iphoneos.a 放到 1/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc 即可
2021-08-09
mvc配置fastjson序列化枚举
怯懦囚禁人的灵魂,希望可以令你感受到自由,强者自救,圣者渡人。——《肖申克的救赎》 我们可以使用SerializerFeature.WriteEnumUsingToString去完成枚举的序列化操作: 例如我这里某对象属性为枚举类型 我们当使用该POJO接收参数时,我们如果手动转换的话比较麻烦 我们配置如下的后就可以直接传入枚举常量的名字进行映射 例如我此处 最后传入type=INDEX_SHUFFLE,成功完成映射 完整代码 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475package com.ruben.zsxh.config;import com.alibaba.fastjson.serializer.SerializeConfig;import com.alibaba.fastjson.serializer.Serializer...
2020-06-14
箭头函数
最近在代码中用到大量箭头函数,例如 12345result = page.stream().map(p -> { //这个p相当于list里的每一项,map需要return Map<String, Object> tempMap = BeanUtil.beanToMap(p); tempMap.put("isMeLikeHisProduct", StringUtils.isNotBlank(master.getUFavorite()) && master.getUFavorite().contains(p.getId())); return tempMap;}).collect(Collectors.toList()); //可以把return的结果收集起来,转换成一个新的list 以及 1234567productList.forEach(product -> { //这个product相当于list里的每一项,forEach不需要return if (p...
2024-01-06
like concat 兼容h2、mysql、pgsql语法
推动你的事业,不要让你的事业推动你。——爱因斯坦 今天解决 https://github.com/apache/incubator-streampark/issues/3451 时候发现从'%${variable.variableCode}%'改为concat ('%', #{variable.variableCode}, '%') 解决的sql注入问题与postgresql不兼容 于是加了一个CAST解决 https://github.com/apache/incubator-streampark/pull/3457 concat('%', CAST(#{variable.variableCode} AS CHAR), '%') 这样就兼容了h2、mysql和pgsql 这里测试时候首先本地运行h2跑一下,然后用docker启动一个mysql跑一下: 1docker run --name streampark-mysql -e MYSQL_ROOT_PASSWORD=streampark -e ...
2021-04-30
Optional没有peek函数?自己写一个
好动与不满足是进步第一必需品。——爱迪生 我发现Optional竟然没有类似于Stream里的peek函数 那我就只好自己写一个了。。。 但Optional由final修饰没法继承,那我复制一个出来改个名字好了 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516...
2024-07-11
Mybatis在Mapper上加注解关闭一级缓存
正如自然忌讳真空一样,人类是讨厌平等的。——《我是猫》 MyBatis的一级缓存是SqlSession级别的缓存,默认是开启的。如果你想在查询时禁用一级缓存,可以使用@Options注解并将flushCache属性设置为true: 123456789101112import org.apache.ibatis.annotations.Options;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface MyMapper { @Select("SELECT * FROM my_table WHERE id = #{id}") @Options(flushCache = Options.FlushCachePolicy.TRUE) MyEntity selectById(int id);} 这样每次执行查询时,都会刷新缓存。

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog