在另一个类中包含充满可重用函数的类

时间:2013-10-01 04:31:18

标签: java javac

在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文件夹(file1file2file3等内容中包含多个文件夹。每个子文件夹中的所有代码都是完全独立的,与所有其他子文件夹中的所有代码无关。但是,我想在所有子文件夹中的代码中使用一些通用函数,因此它放在顶级文件夹中。

在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计算机上执行此操作。

1 个答案:

答案 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