我不明白为什么在“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