如何在单独的文件夹中引用Java对象类



我有一个Main类。我还上了另一门课(称之为"跑步者"课)。然而,我希望有更多的Runner类(它们之间的区别是其他人对每个Runner类的修改)。是否可以将每个Runner类放在不同的文件夹中,并将文件夹与Main类放在同一目录中,然后引用Main类中的Runner对象,就好像它们是与Main类在同一个目录中的类一样?

是的,这个问题让我觉得你在看像php或ruby这样的Java,这不是很准确。在Java中,每个类都有一个所谓的"完全限定名称",它是从它存储的文件夹派生的(就像Python一样)。因为Java是编译的,所以您告诉编译器在哪里可以找到编译Java文件所需的代码,而不是在文件的顶部放置对这些所需文件的引用(如php中的require语句),这将是解释器的指令。

举个例子,你有一个这样的结构:

src/
  Main.java
  /runner1
     SomeRunner.java
  /runner2
     SomeOtherRunner.java

Main.java

public class Main{
  public static void main(String[] args){
     //use SomeRunner
     runner1.SomeRunner.run();
     //use SomeOtherRunner
     runner2.SomeOtherRunner.run();
  }
}

SomeRunner.java

package runner1;
public class SomeRunner{
   public void run(){ ... }
}

SomeOtherRunner.java

package runner2;
public class SomeOtherRunner{
   public void run(){ ... }
}

或者,您可以使用导入:

Main.java

import runner1.SomeRunner;
import runner2.SomeOtherRunner;
public class Main{
  public static void main(String[] args){
     //use SomeRunner
     SomeRunner.run();
     //use SomeOtherRunner
     SomeOtherRunner.run();
  }
}

在这个例子中,我选择了任意的包名称(runner1runner),这在技术上是很好的。然而,最佳实践表明,您的包名称应该是项目的反向域名(即com.myproject),以避免与其他库等发生冲突。您可以在此处阅读更多信息。编译Main类时,需要向编译器提供SomeRunnerSomeOtherRunner文件,以便编译器知道在哪里可以找到它们。

最新更新