【问题标题】:Am I able to do: import java.*? [closed]我能做到:导入 java.* 吗? [关闭]
【发布时间】:2013-03-16 15:57:54
【问题描述】:

我很好奇我是否能够做到:在使用 java 时导入 java.*,并且几乎所有我需要的东西都导入了。这可能吗?我不需要这样做,这个问题刚刚掠过我的脑海,我很好奇。 谢谢!

【问题讨论】:

  • 当你尝试它时发生了什么?
  • 编译代码可能需要更长的时间。不是吗?
  • 您仍然需要 java.util.Datejava.sql.Date 等类似名称的完全限定名称。
  • 命名空间的存在是有原因的——即使它按照你想象的方式工作,它仍然会导致巨大的问题,因为经常有同名的类和包,然后会发生冲突。跨度>

标签: java import


【解决方案1】:

import something.* 不是递归的。你只会得到指定包中的所有类,而不是子包。

http://docs.oracle.com/javase/tutorial/java/package/usepkgs.html

由于java 根包中没有类,import java.*; 不会做任何事情。

【讨论】:

  • 没有“子包”这样的概念。不同的包根本没有关系。
  • 严格来说你是对的,但是“子包”是一个常用的术语,即使是 Sun/Oracle 也使用。
  • 一个常见的误导性术语... ;)
【解决方案2】:

这没有任何意义,因为 java.* 包中没有类。

【讨论】:

    【解决方案3】:

    java 中的包不是分层的,即使文件系统是分层的。包名只是一个命名空间。 java.lang.reflectjava.lang 完全无关。两者是完全不同的名称。

    唯一的分层方面是命名空间可以映射到文件夹结构,并且此约定由最常见的类加载器使用,它期望来自文件夹 ./com/example/util 中的包 com.example.util 的类。但仅此而已。

    【讨论】:

      猜你喜欢
      • 2014-02-25
      • 2014-03-22
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多