天天看点

工作中遇到的小坑合集(java)工作中遇到的小坑合集

工作中遇到的小坑合集

fastjson

  1. fastjson在使用复杂的集合类型的使用,要使用TypeReference.如下
Map<Long,PriorityQueue<Message>> map = JSONObject.parseObject(string, 
new TypeReference<Map<Long, PriorityQueue<Message>>>() {});
           
  1. PriorityQueue优先队列,要求内部对象是Comparable

    上诉的示例代码,要求Message是Comparable,因为在优先队列建立的时候,会要判断元素之间的compare关系,而TypeReference没法使得PriorityQueue能传入compare对象,所以就要求内部对象本身是Comparable

  2. fastJson的ref

    当fastJson检测到需要json字符串的对象中有重复的对象的时候,会使用ref字段,表明引用,通过这样的方式来节约字节。

  3. PriorityQueue初始化的number

    PriorityQueue在初始化的时候可以传入个数字n,不要以为这样就可以用TopN的堆了,实际上PriorityQueue会自动扩容的。

maven

maven jar 加载失败的问题

今天给个子 module 添加 mybatis 代码,在跑单元测试的时候,提示我缺少类,一看是 spring-jdbc 中的类,添加

<dependency>

依赖之后发现, 依旧提示缺少该类,查看 maven 分析,发现确实没有 spring-jdbc 的包,但是 pom 文件中明明添加了。

解决问题:本质原因在于在 spring-jdbc 的引用之上还有一个其它工具的包,我暂时称为 A.jar(公司内部 jar 包,不提及名字) ,由于这个 jar 包的 groupId 写错的,但是坑爹的是 IDEA 并没有提示,(IDE 工具也不是万能的) 导致 maven 解析停在了这一句上,没有加载 spring-jdbc 。将 A.jar 包的 groupId 修改回来之后,问题就解决了。