我不明白爲什麼在「java」中爲少數導入包附加「x」。是什麼原因?難道不能像其他人一樣java.swing.*
java.io.*
?爲什麼導入javax.swing。*而不是java.swing。*
回答
Swing最初是Java的擴展 - 一個可單獨下載的庫。它成爲Java 1.2中「主要」JRE的一部分。對於一個單獨的圖書館來說,聲稱一個java。*包,因此當前情況是很奇怪的。還有很多其他的擴展有類似的故事。
該Wikipedia article on Swing有一些關於其歷史的更多信息。
由於歷史原因和向後兼容性。在java 1.2 swing之前,java是作爲一個獨立的包分發的(因此javax作爲擴展)。
當swing成爲標準java分發包名的一部分時,爲保持向後兼容性而保留了它。在wikipedia文章
更多信息從核心的Java 2:
alt text http://bks5.books.google.fr/books?id=W6bomXWB-TYC&printsec=frontcover&img=1&zoom=5&edge=curl&sig=ACfU3U3IeRSfENUVokGf-d9GUZZBU-tYMQ
名稱javax
表示Java擴展包,而不是一個核心包。 Swing類實際上是Java 1.1的擴展。由於Swing類不是核心層次結構的一部分,因此可以將Swing類加載到Java 1.1兼容的瀏覽器中(瀏覽器的安全管理器不允許添加以「java.
」開頭的任何程序包)。在Java 2平臺上,Swing軟件包不再是擴展,而是核心層次結構的一部分。任何與Java 2兼容的Java實現都必須提供Swing類。儘管如此,爲了與Java 1.1代碼兼容,javax名稱仍然存在。 (實際上,Swing包起初爲com.sun.java.swing
,然後在Java 2 beta版早期簡要地轉移到java.awt.swing
,然後在Java 2後期版本中回到com.sun.java.swing
,並且經過Java程序員抗議之後發現它的最終安放地點在javax.swing
。)
x是因爲它們是擴展名。在Java 1.1版本中沒有搖擺,當它被添加時,他們決定將它命名爲:javax
有許多類似的歷史包。
- 1. 爲什麼用javax.swing代替java.swing?
- 2. 我無法導入Javax.swing
- 3. 爲什麼使用「slim = tf.contrib.slim」而不是正常導入slim?
- 4. 爲什麼我可以導入mako而不是mako.Template?
- 5. 爲什麼=而不是:?
- 6. 爲什麼在組件導出期間應用HOC而不是導入組件
- 7. 爲什麼MSTest嚮導的F後綴是D而不是D?
- 8. 爲什麼python的monkeypatch在導入類而不是模塊時不起作用?
- 9. 爲什麼DateTime.Now.Year是int而不是ushort
- 10. 'num_of_cmt'是4而不是2。爲什麼?
- 11. 爲什麼retainCount是0而不是1?
- 12. 爲什麼爲(;;)而不是while(1)?
- 13. 爲什麼mongodb更新或插入而不是插入?
- 14. 是什麼,而不
- 15. TypeScript - 什麼是'導入導入'?
- 16. 「導入*」導入到底是什麼?
- 17. Java:爲什麼我不能插入參數而不是%s?
- 18. 爲什麼EF插入邏輯導致刪除而不是更新?
- 19. 爲什麼我可以導入一個npm包而不是其他(Webpack設置)?
- 20. #導入iAd而不是.h
- 21. 爲什麼int main(){return main(); }導致stackoverflow而不是尾遞歸?
- 22. 爲什麼ntdll.dll只能導出NtXXX和ZwXXX而不是NtXXX?
- 23. 將javax.swing轉換爲命令輸入
- 24. Eclipse,創建Android項目,不會導入javax.swing
- 25. 爲什麼我不需要導入sys?
- 26. 爲什麼我不能導入geopandas?
- 27. 爲什麼我不能導入nltk?
- 28. 爲什麼spyder不能導入tensorflow
- 29. 爲什麼我不能導入pygtk?
- 30. 爲什麼Python導入不工作?
哇!引用一個StackOverflow問題的維基百科文章有多酷。 – OscarRyz 2010-01-05 09:27:15
從維基百科鏈接StackOverflow有什麼好處?每個人都可以創建這樣的鏈接...... – Arne 2010-01-05 15:51:39