2016-03-04 85 views
0

我將apitest移植到jogl,其中一個目錄名爲Null,因此我只是試圖使用null作爲軟件包名稱,Netbeans抱怨它無效。Java,爲什麼我們不能使用null作爲包名?

我知道我是雞蛋裏挑骨頭,但我只是好奇。我沒有發現任何東西在這裏或對谷歌..

是否有與反射,名稱檢索,類似的事情還是要做別的東西? 或者是這樣的設計,與運營商超載相同?

編輯:我知道這是一個保留字,但在代碼..

+2

考慮一下'null.TheClass'這個語句,java應該如何知道你是一個包作爲null? – RAnders00

+0

對,這個有意義 – elect

回答

3

標識符不能被命名nulllanguage specification提到:

標識符不能有相同的拼寫(Unicode字符序列)作爲關鍵字(§3.9),布爾文字(§3.10.3),或空文字(§3.10.7),或發生編譯時錯誤。

+0

是的,但在代碼中 – elect

+0

軟件包名稱是標識符? – elect

+0

@elect它們由標識符組成。請參閱https://docs.oracle.com/javase/specs/jls/se8/html/jls-6.html#jls-6.5.3.1。 – manouti

3
在這種情況下

null是在Java語言中的文字(null literal),你不能用作標識...

根據Oracle

命名約定:

軟件包名稱全部採用小寫字母,以避免與類或接口的名稱衝突。

...

在你的情況下面的參考是非常重要的:

在某些情況下,互聯網域名可能不是一個有效的軟件包 名。如果域名包含連字符或其他 特殊字符(如果包名稱以數字或其他 字符作爲Java名稱的開頭非法使用,或 如果包名稱包含保留Java關鍵字,如「int」。 在這個事件中,建議的約定是添加一個下劃線。例如: 例如:

+0

我會接受你的(在8米),因爲它對我來說更加清晰,併爲我的案例提供了一個很好的竅門 – elect

+0

謝謝你...... :) –

+0

技術上'空'不是一個保留字。這只是一個文字。請參閱https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.9。 – manouti

0

我相信這只是通過設計而得到的。

根據Java語言規範,'null'是一個關鍵字,您不能使用任何關鍵字來標識除主要用途之外的任何其他內容。

儘管您可以對大寫'N'使用Null,對於與預定義關鍵字不匹配的所有其他關鍵字,您都可以使用Null。

Java不鼓勵使用這種不好的命名實踐。

0

null是賦予標識符的值。包是一個標識符。它不可能是一個價值。

相關問題