0

在 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,file2file3)。这些子文件夹中的所有代码都是完全独立的,并且与所有其他子文件夹中的所有代码无关。但是,我想在所有子文件夹中的代码中使用一些通用函数,因此它被放置在顶级文件夹中。

在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.javaimport我需要在顶部放置什么样的声明File1.java?我需要编译MyCodeFunctions.java成 JAR 文件吗?如果是这样,怎么做?编译时我在命令行上运行什么来链接这个 JAR 文件File1.java

include我知道这与您在 PHP 等语言中找到的那种语句不同。这就是这个问题的全部意义所在。我知道有区别,我想知道在 Java 范式中等效的方法是什么。我不想使用 IDE 来执行此操作,对我来说手动执行它有多复杂并不重要。

我正在使用 Linux 来执行此操作,但我可以在 Windows 机器上轻松执行此操作。

4

1 回答 1

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();
    }
}

您可以*在最后一个位置使用 a 作为通配符来导入所有类(用于import语句)或所有静态成员——包括字段和方法&mdash(用于import static语句)。

编辑

要编译这两个文件,您的源代码树应如下所示:

/com
    /awesome
        /mycode
            /file1
                File1.java
            MyCodeFunctions.java

要编译,cd 到包含/com并使用命令行的文件夹:

javac com/awesome/mycode/MyCodeFunctions.java com/awesome/mycode/file1/File1.java

以及您想要的任何其他选项(控制输出等)请参阅javac 文档以获取更多信息。

于 2013-10-01T04:33:24.990 回答