Java-ECJ和Javac在泛型類處理上的一點區(qū)別

0. 背景

ECJ(Eclipse Compiler for Java)就是Eclipse自帶的java編譯器。
公司的項目都是在Eclipse上面做的雏婶。自己用了一段時間的Idea覺得很爽绘闷,準備換過來寫橡庞,發(fā)現公司基盤報錯了。調查發(fā)現是泛型方面的異常印蔗。整理如下扒最。

1. 問題

公司源碼肯定不能放,把問題整理之后华嘹,關鍵的幾個類的UML類為:


出問題的類之間的UML圖

各個類的代碼為:
基礎類:

public abstract class BaseClass<T> {
}

一個繼承了基礎類的類:

public class TClass extends BaseClass{
}

一個泛型接口:

interface BaseInterface<T extends BaseClass<?>> {
}

運行主類:

public class ECJ_test implements BaseInterface<TClass>{
    public static void main(String[] args) {
        TClass  s = new TClass();
        System.out.println(s.hashCode());
    }
}

以上代碼在Eclipse中會報warning吧趣,程序能夠編譯通過并運行:


Eclipse報警告

但是正常編譯,執(zhí)行

但是javac是編譯不通過的:


image.png

那么制定了compiler為javac的Idea編譯也就不通過了:


image.png

2. 解決辦法:

2.1 設置編譯器

公司基盤的代碼耙厚,而且有部分類已經打包為jar强挫,部署在maven倉庫中了。要在Idea中編譯就需要把Idea的編譯器換成Eclipse:

Preferences > Build, Execution, Deployment > Java Compiler > User Compiler : Eclipse


Idea設置Compiler

2.2 修改代碼

在遇到這個問題之前颜曾,我直覺上會覺得這個代碼是不符合java語法的纠拔,應該修改為:

public class TClass extends BaseClass<TClass>{
}

這樣修改之后的javac和Idea中都能正常編譯執(zhí)行,且不會有Error或Warning泛豪。

3. 后記

看起來javac比ECJ進行了更嚴格的泛型檢查稠诲。但是問題不止于此,整理問題的過程中想到以下問題待思考诡曙,記下來以后學習:

  • 項目部署用的Tomcat臀叙,依賴的也是官方jdk,為什么不會報錯呢价卤?
  • 多數文章只會介紹泛型的使用劝萤,而泛型Class<?>和基礎性Class在Java規(guī)范里的區(qū)別究竟是什么呢?
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末慎璧,一起剝皮案震驚了整個濱河市床嫌,隨后出現的幾起案子跨释,更是在濱河造成了極大的恐慌,老刑警劉巖厌处,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳖谈,死亡現場離奇詭異,居然都是意外死亡阔涉,警方通過查閱死者的電腦和手機缆娃,發(fā)現死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瑰排,“玉大人贯要,你說我怎么就攤上這事⊥肿。” “怎么了崇渗?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長函荣。 經常有香客問我显押,道長,這世上最難降的妖魔是什么傻挂? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任乘碑,我火速辦了婚禮,結果婚禮上金拒,老公的妹妹穿的比我還像新娘兽肤。我一直安慰自己,他們只是感情好绪抛,可當我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布资铡。 她就那樣靜靜地躺著,像睡著了一般幢码。 火紅的嫁衣襯著肌膚如雪笤休。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天症副,我揣著相機與錄音店雅,去河邊找鬼。 笑死贞铣,一個胖子當著我的面吹牛闹啦,可吹牛的內容都是我干的。 我是一名探鬼主播辕坝,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼窍奋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起琳袄,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤江场,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后挚歧,有當地人在樹林里發(fā)現了一具尸體扛稽,經...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡吁峻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年滑负,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片用含。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡矮慕,死狀恐怖,靈堂內的尸體忽然破棺而出啄骇,到底是詐尸還是另有隱情痴鳄,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布缸夹,位于F島的核電站痪寻,受9級特大地震影響,放射性物質發(fā)生泄漏虽惭。R本人自食惡果不足惜橡类,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望芽唇。 院中可真熱鬧顾画,春花似錦、人聲如沸匆笤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炮捧。三九已至庶诡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咆课,已是汗流浹背末誓。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留傀蚌,地道東北人基显。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像善炫,于是被迫代替她去往敵國和親撩幽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內容