在PHP中,我可以有一个这样的文件:
function isPrime($num)
{
return true;
}
function sayYes()
{
echo "yes\n";
}
这将位于名为functions.php
的文件夹中名为mycode
的文件中
我有另一个档案:
include "../functions.php";
if (isPrime()) {
sayYes();
}
这是在名为file1.php
的文件夹中名为file1
的文件中。 file1
文件夹位于mycode
文件夹中。
这个例子的意思是我有一个包含大量函数的文件,我希望能够在其他文件中重复使用。我将在mycode
文件夹(file1
,file2
,file3
等内容中包含多个文件夹。每个子文件夹中的所有代码都是完全独立的,与所有其他子文件夹中的所有代码无关。但是,我想在所有子文件夹中的代码中使用一些通用函数,因此它放在顶级文件夹中。
在Java中,我有一个这样的文件:
package com.awesome.mycode.file1;
public class File1
{
public static void main(String[] args)
{
MyCodeFunctions.sayYes();
}
}
这是在与上面相同的File1.java
文件夹中名为file1
的文件中
我有另一个这样的文件:
package com.awesome.mycode;
public class MyCodeFunctions
{
public static void sayYes()
{
System.out.println("yes");
}
}
这是一个名为MyCodeFunctions.java
的文件,位于与上面相同的mycode
文件夹中。
我的问题是:
如何编译这两个类,以便我可以在MyCodeFunctions.java
所在文件夹下的许多不同子文件夹中的类中重用MyCodeFunctions.java
?我需要在import
的顶部放置哪种File1.java
语句?我是否需要将MyCodeFunctions.java
编译成JAR文件?如果是这样,怎么样?在编译File1.java
时,我在命令行上运行什么来链接此JAR文件?
我理解这是与PHP等语言中的include
语句不同的范例。这就是这个问题的重点。我知道存在差异,我想知道在Java范例中这样做的等效方法是什么。我不想使用IDE来做这件事,对我来说手动操作有多复杂并不重要。
我正在使用Linux来执行此操作,但我可以轻松地在Windows计算机上执行此操作。
答案 0 :(得分:2)
在Java中,您将使用import
语句:
package com.awesome.mycode.file1;
import com.awesome.mycode.MyCodeFunctions;
public class File1
{
public static void main(String[] args)
{
MyCodeFunctions.sayYes();
}
}
同一个包中的类不需要import
。
由于sayYes()
是static
函数,因此有一个变体可以让您在没有类限定符的情况下使用该函数:
package com.awesome.mycode.file1;
import static com.awesome.mycode.MyCodeFunctions.sayYes;
public class File1
{
public static void main(String[] args)
{
sayYes();
}
}
您可以在最后一个位置使用*
作为通配符来导入所有类(用于import
语句)或所有静态成员 - 包括字段和方法& mdash(用于{{1声明)。
修改强>
要编译这两个文件,源代码树应如下所示:
import static
要编译,请cd到包含/com
/awesome
/mycode
/file1
File1.java
MyCodeFunctions.java
的文件夹并使用命令行:
/com
以及您想要的任何其他选项(控制输出等)。有关详细信息,请参阅javac docs。