我有一个Main课程。我还有另一个课程(称之为“Runner”课程)。但是,我想有更多的Runner类(它们之间的差异是由其他人修改每个Runner类)。是否可以将每个Runner类放在单独的文件夹中,并将文件夹放在与Main类相同的目录中,然后引用Main类中的Runner对象,就好像它们是与Main类在同一目录中的类一样?
答案 0 :(得分:0)
是的,这个问题让我感到震惊,就像你正在查看像php或ruby等Java一样,并不是很准确。使用Java,每个类都有一个名为"完全合格的名称"它是从它存储的文件夹(如Python)中派生出来的。因为Java是编译的,所以你告诉编译器在哪里找到编译java文件所需的代码,而不是在文件的顶部添加对那些所需文件的引用(比如{{1}在php中的语句)这将是对解释器的指令。
比如说你有这样的结构:
require
Main.java
src/
Main.java
/runner1
SomeRunner.java
/runner2
SomeOtherRunner.java
SomeRunner.java
public class Main{
public static void main(String[] args){
//use SomeRunner
runner1.SomeRunner.run();
//use SomeOtherRunner
runner2.SomeOtherRunner.run();
}
}
SomeOtherRunner.java
package runner1;
public class SomeRunner{
public void run(){ ... }
}
或者,您可以使用导入:
Main.java
package runner2;
public class SomeOtherRunner{
public void run(){ ... }
}
在这个例子中,我选择了任意包名(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
),以避免与其他库等冲突。您可以阅读有关该here的更多信息。编译com.myproject
类时,需要将Main
和SomeRunner
文件提供给编译器,以便它知道在哪里找到它们。