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>后,编译通过
相关推荐
2021-03-13
yml中list写法
三更灯火五更鸡,正是男儿读书时。黑发不知勤学早,白首方悔读书迟。——颜真卿 之前写过一个springboot自定义配置 当时配置map使用的是这种方式 123456ruben: number: 4444 avatar: /img/oss/2020-06-01/head.jpg gender: male hobby: ["游戏","动漫","编程"] introduce: {"food": "blood","programLanguage": "java"} 这里hobby是一个List<String>,introduce是一个Map<String,String>,实际上我们可以使用如下写法 1234567891011ruben: number: 4444 avatar: /img/oss/2020-06-01/head.jpg gender: male hobby: -...
2021-06-09
为什么总说不要循环调用dao
我要让全世界都记住我的温柔。——曼德拉 上次咱们测试过了单表多次查询和连表一次查询的性能比较 这次咱们又抽了点时间进行了一次 循坏调用dao查询性能测试 同样是那一百万条数据,最后测试结果出乎意料 123456789101112131415@Testpublic void cycleTest() { long startTime = System.nanoTime(); List<Film> films = filmMapper.selectList(Wrappers.lambdaQuery()); List<Map<String, Object>> collect = films.stream().map(film -> { Language language = languageMapper.selectById(film.getLanguageId()); Language language1 = languageMapper.selectById(film.ge...
2021-06-18
html+vue组件实现阿里云OSS对接
任何问题都有解决的办法,无法可想的事是没有的。──爱迪生 问题场景:一个thymeleaf项目,上传图片、视频是直接使用Java代码保存到服务器上于是服务器压力激增,网页静态资源变得卡顿于是我们需要将图片、视频上传移植到阿里云OSS上 阿里云对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。 一句话描述:它是一个很棒的存取文件的在线服务器 我们可以使用它进行客户端上传,文件不通过服务端也可以上传,这样减轻了我们服务端压力 我们需要一系列配置才可以对接完成,查阅阿里云OSS官方文档发现:JavaScript客户端签名直传的方式最为简单,但这种方式是有弊端的,客户端通过JavaScript把存取文件的认证信息写在代码里面有泄露的风险因此我们采用服务端签名后直传的方式进行上传文件,我们待会儿介绍~ 准备工作: 登录阿里云官网。将鼠标移至产品,单击对象存储 OSS,打开 OSS 产品详情页面。在 OSS 产品详情页,单击立即开通。开通服务后,在 OSS 产品详情页单击管理控制台直接进入 OSS 管理控制台界面。您也...
2021-03-19
sentinel流控降级与熔断
人们因为能忘却,所以自己能渐渐的脱离了受过的苦痛,也因为能忘却,所以照样得再犯前人的错误。——鲁迅 引入依赖 1234567891011<!-- sentinel 降级熔断 --><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!-- 与sentinel控制台进行通信 --><dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-transport-simple-http</artifactId> <version>1.7.1</version></depen...
2024-09-05
高效压缩库:Snappy Java
我来到这个世界,为了看看太阳和蓝色的地平线。——《城门开》 项目介绍 Snappy Java 是一个用于压缩和解压缩数据的高效Java库,它基于谷歌的 Snappy 压缩算法。Snappy 算法的设计目标是提供非常快速的压缩和解压缩操作,同时牺牲一定的压缩率以换取速度。在很多应用场景下,速度优先于压缩率,因此 Snappy 被广泛应用于数据处理、大数据分析和日志系统等场景。 Snappy Java 是 Snappy 算法的 Java 实现,它能够无缝集成到 Java 项目中,为开发者提供快速的压缩和解压缩操作,同时保留了跨平台的兼容性和高效的性能。 Snappy 的主要特点: 高压缩速度:相比于其他压缩算法,Snappy 的压缩速度非常快,适用于低延迟的应用。 适度压缩率:虽然压缩率不如一些其他压缩算法,但在大多数场景下,Snappy 的压缩率足以应对需求。 轻量级:Snappy 算法设计简洁,适合嵌入到各种应用中,尤其适合大规模的数据处理场景。 官方文档、GitHub地址 官方网站:Snappy Java Documentation GitHub仓库:xeri...
2021-06-29
通过Function获取属性对应字段
只有绝望的赌鬼才肯把全部所有作孤注的一掷。一个商人如果把他的全部财产装在一只船上,人家就管他叫冒失鬼——席勒 我写了个函数 123456789101112131415161718/** * 获取表内字段 * * @param function 字段 * @return java.lang.String * @author <achao1441470436@gmail.com> * @since 2021/6/29 16:51 */public static <R, T> String getColumn(SFunction<T, R> function) { SerializedLambda lambda = LambdaUtils.resolve(function); TableInfo tableInfo = TableInfoHelper.getTableInfo(lambda.getImplClass()); return tableInfo.getFieldList() .para...

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