錯誤: -source 1.6 中不支持 diamond 運算符 (請使用 -source 7 或更高版本以啓用 diamond 運算符)

在AS上運行校長項目時,報錯如下:

Error:(71, 35) 錯誤: -source 1.6 中不支持 diamond 運算符(請使用 -source 7 或更高版本以啓用 diamond 運算符)

這個錯誤對應程序裏的代碼是:



一般正確的寫法是在聲明的時候指定類型,也就是:

List<PublicBlogListBean>  _hotDatas = new ArrayList<PublicBlogListBean>();


但是在JDK 1.7裏新增了一個新特性:

      增強對通用實例創建(diamond)的類型推斷 :
             類型推斷是一個特殊的煩惱,下面的代碼: 
             Map<String, List<String>> anagrams = new HashMap<String, List<String>>(); 

             通過類型推斷後變成: 
             Map<String, List<String>> anagrams = new HashMap<>(); 
             這個<>被叫做diamond(鑽石)運算符,這個運算符從引用的聲明中推斷類型。 


也就是說JDK1.7支持這種類型推斷後,在聲明_hotDatas 時new ArrayList<>裏可以不需要加上PublicBlogListBean類型


截圖中的錯誤也提示了:-soure1.6中不支持diamond運算符,Diamond types are not supported at this language level。說明目前使用的JDK版本不支持,但是Project此時的JDK路徑正是1.7的版本,這...


事實上項目裏還沒有對module做源碼兼容性的配置,即設置 Source Compatibility和Target Compatibility爲1.7:


點擊ok會後gradle重新構建,確定reload Project下就好啦~



也可以在build.gradle裏直接配置:




查找的相關資源:

jdk1.7新特性

AndroidGradlePlugin指南(六)高級構建定製

發佈了17 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章