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