java - 如何访问其.java 文件没有包语句的类?

标签 java import package

我只是对某事感到好奇。假设我有以下环境:

文件夹结构-

projects \ prj1 \ src \ pkgs \ main (contains Main.java)
                             \ test (contains TestClass.java)

主.java-

package pkgs.main;

import pkgs.test.TestClass;

class Main {
    public static void main(String[] args) {
        TestClass tc;
    }
}

基于 Java shell 的编译命令 -

javac -d ..\cls -sourcepath ..\src ..\src\pkgs\main\Main.java
java -classpath ..\cls pkgs.main.Main

如果我然后创建一个名为 Default.java 的 .java 代码文件,它没有包语句 -

public class Default {}

并且把这个文件放在src文件夹下,Main.java这样的类文件怎么访问这个Default类呢?我尝试使用以下导入语句,但都不起作用,导致编译错误:

主.java-

package pkgs.main;

// import Default;    (causes many compilation error messages)
// import .Default;   (causes "identifier expected" compilation error)

我还将 Default.java 文件从 src 文件夹移动到包含 Main.java 的同一文件夹中,但这也不起作用。我很欣赏整个想法似乎是糟糕的设计,但我这样做只是为了更多地了解包和导入语句的工作方式以及项目文件夹结构。谢谢。

最佳答案

为了避免间接的两个步骤,接受的答案的本质是 according to the specification :

It is a compile time error to import a type from the unnamed package.

这意味着如果您不在未命名(又名默认)包中,则无法访问未命名/默认包中的类,unless you are prepared to turn to reflection .

然而,如果你在未命名/默认包中,你不需要导入任何东西,只是不要忘记设置类路径,例如javac -cp "."ABC.java

关于java - 如何访问其.java 文件没有包语句的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23494084/

相关文章:

java - 如何为 junit @Test 的 "expected"属性使用变量?

JavaFX : how to disable drag and drop and pasting from external sources on WebView?

python - 导入错误 : No module named 'queue' while running my app freezed with cx_freeze

python - 如果没有数据,尝试使用 bs4 跳过属性

python - 在嵌套包中导入模块

python - PyCharm 编辑器和 Python 控制台 Unresolved reference

java - 在 Android 对话框中使用列表 - 如何避免静态?

java - 处理中每个对象的 mouseEventListener

macos - 协同设计和产品设计有什么区别?

java - 在java中导入类文件