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

标签 java javac

在 PHP 中,我可以有一个像这样的文件:

function isPrime($num)
{
    return true;
}

function sayYes()
{
    echo "yes\n";
}

这将位于名为 mycode 的文件夹中名为 functions.php 的文件中。
我还有另一个文件:

include "../functions.php";
if (isPrime()) {
    sayYes();
}

该文件位于名为 file1 的文件夹中名为 file1.php 的文件中。 file1 文件夹位于 mycode 文件夹内。

这个例子的要点是,我有一个包含一大堆函数的文件,我希望能够在其他文件中重用这些函数。我将在 mycode 文件夹中包含许多文件夹(file1file2file3 等)。每个子文件夹中的所有代码都是完全独立的,并且与所有其他子文件夹中的所有代码无关。但是,我想在所有子文件夹中的代码中使用一些通用函数,因此将其放置在顶级文件夹中。

在Java中,我有一个像这样的文件:

package com.awesome.mycode.file1;

public class File1
{
    public static void main(String[] args)
    {
        MyCodeFunctions.sayYes();
    }
}

该文件位于与上述相同的 file1 文件夹中名为 File1.java 的文件中。
我有另一个文件,如下所示:

package com.awesome.mycode;

public class MyCodeFunctions
{
    public static void sayYes()
    {
        System.out.println("yes");
    }
}

该文件位于名为 MyCodeFunctions.java 的文件中,位于与上面相同的 mycode 文件夹中。

我的问题是这样的:
如何编译这两个类,以便可以在 MyCodeFunctions.java 所在文件夹下的许多不同子文件夹中的类中重用 MyCodeFunctions.java ?我需要在 File1.java 顶部放置什么样的 import 语句?我需要将 MyCodeFunctions.java 编译为 JAR 文件吗?如果是这样,怎么办?编译 File1.java 时,我应该在命令行上运行什么来链接此 JAR 文件?

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

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

最佳答案

在 Java 中,您可以使用 import 语句:

package com.awesome.mycode.file1;

import com.awesome.mycode.MyCodeFunctions;

public class File1
{
    public static void main(String[] args)
    {
        MyCodeFunctions.sayYes();
    }
}

同一包中的类不需要导入

由于 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(对于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 docs了解更多信息。

关于java - 在另一个类中包含充满可重用函数的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19108014/

相关文章:

Java - 具有 If 语句打印顺序错误的主方法

Java - 打开 CSV - .csv 到 .xls 扩展名

java - 为什么这段代码编译失败,原因是类型推断?

java - 使用 maven+netbeans 定位旧的 java 版本而不安装旧的 java 版本?

java - Ant 错误: unmappable character for encoding Cp1252

java - 在 Java Web 应用程序中在哪里存储数据库字符串连接?

java - MySQL 备份 (JAVA)

java - gradle 生成的文件编译失败

java - 如何在同一个包中轻松运行java程序?

java - 如何从输入文本文件中获取行和列的大小?