java - 如何在 Java 中从包内访问不在包内的文件

标签 java package

我尝试搜索如何从 Java 包内访问不在指定包内的文件,但无法找到答案。有谁知道怎么做吗?

最佳答案

如果您的意思是要从命名包访问默认(未命名)包中的 CLASS,则不能。 JLS 是这样说的:

"A type in an unnamed package (§7.4.2) has no canonical name, so the requirement for a canonical name in every kind of import declaration implies that (a) types in an unnamed package cannot be imported, and (b) static members of types in an unnamed package cannot be imported. As such, §7.5.1, §7.5.2, §7.5.3, and §7.5.4 all require a compile-time error on any attempt to import a type (or static member thereof) in an unnamed package. "

这意味着您不能使用单一类型导入。并且“通配符”导入将不起作用,因为您无法命名该包。

是的,您可以通过使用反射来解决此限制,但它非常麻烦,并且会使您的代码缓慢且脆弱。如果您想了解 Java 中的反射,请从这里开始 - http://docs.oracle.com/javase/tutorial/reflect/index.html 。但这不是很好地解决这个“问题”吗?

正确的解决方案是使用包...正如 Java 语言设计者的意图。 JLS 是这样说的:

"Unnamed packages are provided by the Java SE platform principally for convenience when developing small or temporary applications or when just beginning development."

这意味着您应该将未命名的包用于小型/临时应用程序(或作为权宜之计),并转向使用命名包来处理任何严重的问题。

<小时/>

如果您的意思是要访问未命名包中的文件(例如资源),那么您只需在资源名称前面加上斜杠即可;例如

      InputStream is = classLoader.getResourceAsStream("/someresource");

关于java - 如何在 Java 中从包内访问不在包内的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14087141/

相关文章:

java - 阅读文本并打印出其中的日期

java - Java 的 foreach 循环是否保持顺序?

python - 找不到 python xlrd 版本

r - 为 Linux 安装 R 包时出错

android - 使用特定的 Android 系统 WebView

java - Cisco的ASDM是用什么GUI工具包编写的?

java - Android:ThreadSafeClientConnManager 下载图像时出现错误

java - 如何重置或重启 ARCore session ?

latex - 如何在 LaTeX 中安装软件包

ios - 如何在 Linux 上构建 Mac 包? (BOM文件问题)