2013-04-08 43 views
3

在Java 6中,使用泛型是可選的。沒有泛型的代碼確實會編譯,但Eclipse對此有疑問,所以我開始想知道在更高版本的Java中可能需要使用泛型。在Java源代碼中使用泛型的強制力

Collection<?> foo = ... 

將編譯而

Collection foo = ... 

不會了。或者:編譯器可以被迫像這樣行事嗎? - 就像Perl的「use strict」?

換句話說:如果一個想到的是工作需要泛型化上的Java源代碼目前工作正常,但沒有配備仿製藥花了? Oracle是否有一些代碼向後兼容性保證?

搜索力的仿製藥Java的泛型需要並沒有使我對有用的信息。

+2

設計師通過類型擦除特別注意向後兼容。它必須是爲了一些有效的理由:) – Jayan 2013-04-08 08:00:16

+0

找到一個相關的(如果不重複):http://stackoverflow.com/questions/697879/javac-flag-to-disallow-raw-types – Jayan 2013-04-08 08:10:05

回答

1

目前還沒有明確的方式可以肯定地說,但我非常懷疑甲骨文既會否認使語法結構無效。如果不是真正需要的話,這就像是強迫你使用鑽石推理。

我可以體面肯定地說,甲骨文沒有計劃從Java刪除語法。太多的人會抱怨(因爲幾乎所有的東西都會崩潰)。

1

IntelliJ也警告使用原始類型。它也必須是其他IDE。所以,我想,你的情況下使用CI /命令行實際構建..

你可以編譯器警告(Xlint:unchecked)和一些後期處理。

3

如果原始類型不被允許,您將不被允許使用舊代碼。但是,您可以配置Eclipse以生成錯誤。見窗口 - >首選項 - >爪哇 - >編譯器 - >錯誤/警告,在部分泛型類型