是否使用Java的默認包是一個不好的做法?是否使用Java的默認包是一種不好的做法?
回答
是的。理想情況下,軟件包名稱應該是全球唯一的,以避免命名衝突。使用默認包打破了這個約定。從默認包導入類也是不可能的。
爲什麼根本不存在未命名的軟件包,如果這是一個壞主意?從the JLS §7.4.2:
Unnamed packages are provided by the Java platform principally for convenience when developing small or temporary applications or when just beginning development.
......中剔除,直到其他人與你有相同的思路。使用命名包時有什麼問題? –
@irreputable我喜歡你的邏輯。 – Michael
...是的,但後來他們擔心像我這樣的人,所以他們都決定不使用它。 – irreputable
是的。問題是無法從默認包中導入類。
上有許多不同的層面的問題:
- 你不能從沒有
- 你會得到類裝入問題,如果你的類導入默認包中的類嘗試解決多個工件中的默認包
- 您不能再像以前一樣使用默認和受保護的範圍
- 沒有明顯的您的代碼與其他代碼的區別
是的。正如其他答案所述,您無法從默認包中加載類。
參見SO答案:
How to import a class from default package
How to access java-classes in the default-package?
然而,log4j的要求配置來位於默認包。這是保持在那裏合理的唯一的事情。
編輯:正如Sean Patrick Floyd和Michael在評論中指出的那樣,您可以將任何配置文件放入默認包中。感謝你們兩位向我指出這一點。
不只是log4j config,許多類型的配置數據。但不是Java類 –
Spring配置文件(applicationContext.xml)也經常在這裏。 – Michael
@SeanPatrickFloyd它是這樣的評論,幫助我提高我的技能!謝謝。 –
- 1. 您是否認爲ASP.NET WebForms是一種不好的做法?
- 2. 是否包含未使用的JavaScript文件是一種不好的做法?
- 3. 抽象使用的API是否是一種好的做法?
- 4. Java:在XML中定義bean是否是一種好的做法?
- 5. 是否有Java的一種方法,使按鈕默認
- 6. 是否包含()/ require()與「副作用」是一種不好的做法?
- 7. 使用擴展方法來設置默認屬性是否是一種好的做法?
- 8. 使用html'confirm'方法是否被認爲是良好的做法?
- 9. 將Solr用作數據庫是否是一種好的做法
- 10. 使用NULL的默認值是否好?
- 11. 總是加入SQL表是否是一種很好的做法?
- 12. 在另一種方法的參數列表中調用方法是否是Java中的一種良好做法?
- 13. 是否總是在DAL基類中使用TransactionScope是一種好的做法?
- 14. 用「使用」來引用特定項目是否是一種很好的做法?
- 15. 存儲計算值是否是一種很好的做法?
- 16. 鏈接libstdC++ static是否是一種好的做法?
- 17. 拆分CSS是否是一種很好的做法?
- 18. 分配後清除()bytebuffer是否是一種好的做法?
- 19. 忽略腳本類型是否是一種好的做法?
- 20. 在Redux商店中配置是否是一種好的做法?
- 21. 捕獲意外異常是否是一種好的做法?
- 22. 認爲是好的做法?
- 23. 使用$超時強制執行,是一種不好的做法?
- 24. 在JAR中打包SQL數據庫是否是一種好的做法?
- 25. 在MySQL中將某些字段/列的默認值設置爲NULL是否是一種很好的做法?
- 26. instanceof是一種好的做法嗎?
- 27. JavaScript:window.spam是一種很好的做法嗎?
- 28. 在業務邏輯中使用反射是否是一種好的做法?
- 29. 使用「/>」結束coldfusion自閉標籤是否是一種好的做法?
- 30. 設計數據庫時使用表前綴是否是一種好的做法?
我試圖從其他「真實」軟件包中引用該軟件包中的類時,使用默認軟件包時出現問題的模糊記憶。 – Oliver
是的,除非你正在編寫丟棄代碼。 – aroth
取決於你在做什麼。對於單類Java作業而言,它沒有問題。其他任何東西 - 只要把它放在一個命名包中,你就很安全。 –