天天看點

工作中遇到的小坑合集(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 修改回來之後,問題就解決了。