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>后,编译通过
相关推荐
2023-08-06
vaadin
历史是一堆灰烬,但灰烬深处有余温。——黑格尔《美学》 Vaadin允许我们使用java代码进行页面构建 Vaadin 是一个 Java 的 Web 应用程序开发框架,其中包含一个大型的 UI 组件库。它可以帮助您比以前更快地构建可靠的 Web 应用程序和出色的用户体验 https://vaadin.com/ 我们按照官方文档里下载demo https://vaadin.com/docs/latest/guide/quick-start 运行以后 发现这里的主要代码: 1234567891011121314151617181920212223242526272829303132package com.example.application.views.main;import com.vaadin.flow.component.Key;import com.vaadin.flow.component.button.Button;import com.vaadin.flow.component.notification.Notification;import com.vaadin...
2021-09-19
mybatis-plus乐观锁
青,取之于蓝而青于蓝;冰,水为之而寒于水。 ——《荀子·劝学》 同样还是mybatis-plus官方示例项目 此处乐观锁不同于悲观锁的区别是,它只有在真正执行数据库操作的时候才去进行判断是否重复修改 需要指定一个字段作为版本号,使用@Version注解 官方文档中如此描述: 当要更新一条记录的时候,希望这条记录没有被别人更新乐观锁实现方式: 取出记录时,获取当前version 更新时,带上这个version 执行更新时, set version = newVersion where version = oldVersion 如果version不对,就更新失败 乐观锁配置需要两步 #1.配置插件spring xml方式: 123456789<bean class="com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor" id="optimisticLockerInnerInterceptor"...
2021-08-15
mybatis-plus不使用spring
只有把抱怨环境的心情,化为上进的力量,才是成功的保证。——罗曼·罗兰 代码如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667package com.ruben.simplescaffold;import com.baomidou.mybatisplus.core.MybatisConfiguration;import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;import com.baomidou.mybatisplus.core.toolkit.Wrappers;import com.ruben.simplescaffold.entity.UserDetail;import com.ruben.simplescaffold.mapper.UserDetailMapper;import or...
2024-03-18
r2dbc自动填充审计字段
不要企图无所不知,否则你将一无所知。——佚名 在r2dbc中自动填充审计字段可以使用org.springframework.data.annotation.CreatedDate注解 以及org.springframework.data.annotation.LastModifiedDate 例如: 12345678910111213141516171819import lombok.Data;import org.springframework.data.annotation.CreatedDate;import org.springframework.data.annotation.LastModifiedDate;import java.time.LocalDateTime;/** * RtcInspectLog * * @author achao@apache.org */@Datapublic class RtcInspectLog { private Long id; @CreatedDate private LocalDateTime...
2021-05-23
springboot默认跳转/error页面变更
宁鸣而死,不默而生。——胡适 宁鸣而死,不默而生。——胡适 在开发中我们经常看到这样一个页面 意思是告诉你,没有映射到/error对应的视图 这个是从哪里出现的呢? 我们找到org.springframework.boot.autoconfigure.web.servlet.error包下面 这里我们看到ErrorMvcAutoConfiguration,因为springboot自动装配就是这些xxxAutoConfiguration去完成的 打开一看,发现:诶?!这里有这样一段代码 这段代码告诉我们,如果在没注入ErrorViewResolver并且注入了DispatcherServlet这个bean的情况下,则注入一个叫DefaultErrorViewResolver的bean 如果你现在就想知道怎么修改默认的/error路径映射? 那可以直接注入一个ErrorViewResolver 在你的任意一个配置类中,我建议是放到Mvc配置类中 12345678910111213141516171819202122232425/** * web配置类 * * @auth...
2021-08-17
fastjson全局序列化坑
偌大的城市,绵延无尽,并非是我眼见的让我停住了脚步,而是我所看不见的。——《海上钢琴师》 今天遇到这样一个问题:序列化出现了与预期不一致的效果,重现代码很简单,就返回一个list,包含几个对象 12345@GetMappingpublic Result testQueryParam(CommonDTO commonDTO) { final UserDetail userDetail = UserDetail.builder().build(); return Result.ok().data(Arrays.asList(userDetail, userDetail, userDetail));} 但可以看到我这里第一条数据是正确的,第二条开始就变成了{$ref: "$.data[0]"} 这是因为我们在使用fastjson作为mvc全局序列化框架的时候 在fastjson中,会自动检测循环引用,并且输出为fastjson专有的引用表示格式。但这个不能被其他JSON库识别,也不能被浏览器识别,所以fastjson提供了关...

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